deepslam / content-parser
简单的内容抓取器,可以检测各种网页上的内容
v1.0.5
2017-06-19 12:59 UTC
Requires
- ixudra/curl: 6.*
- j0k3r/graby: 1.*
This package is not auto-updated.
Last update: 2024-09-23 15:39:18 UTC
README
使用此包,您可以轻松检测不同网页上的主要内容并将其抓取出来。此包提供以下功能
- 可扩展的架构。您可以轻松添加对新API的支持
- 代码清理。该包可以自动清理CSS和样式属性。因此,您将始终收到干净且良好的HTML内容。
该包使用自动算法从网页抓取数据。您将收到来自针式网页的标题和内容。
要求
该包需要以下解决方案
安装
您可以通过Composer安装该包。只需运行
php composer require deepslam/content-parser
接下来,您必须在config/app.php中添加服务提供者
... Deepslam\ContentParser\ContentParserServiceProvider::class, ...
下一步,您需要在config/app.php中创建别名
'ContentParser' => Deepslam\ContentParser\ContentParser::class,
之后,您需要发布配置
php artisan vendor:publish --provider="Deepslam\ContentParser\ContentParserServiceProvider"
别忘了运行config:cache命令
php artisan config:cache
这就结束了!
设置
有两种不同的解析器
- 独立解析器 - 默认使用 graby
- MarcuryContentParser,它使用 Mercury API
因此,您有3个配置
- /config/deepslam/parser.php - 这是所有解析器的通用配置。在这里,您可以配置诸如是否清理代码、剥离标签、设置允许的标签列表等选项。
- /config/deepslam/mercury-tools.php - 只有一个设置 - Mercury API服务的API密钥
- /config/deepslam/graby.php - 这是graby解析器原始设置的副本。您可以在开发者页面上了解它。
用法
您可以轻松使用ContentParser
$parser = ContentParser::create();
将创建ContentParser对象。
此配置将使用"Graby"解析器。如果您需要使用另一个解析器,您可以在参数中指定它
$parser = ContentParser::create('mercury');
结果,您将收到ContentParser对象。
为了解析数据,您必须使用返回布尔值结果的方法(如果已接收到数据,则返回true,否则返回false)
$parser->parse($url)
为了获取解析结果,有一个方法
- getResult - 返回针式ParsingResult对象
此对象中有一些方法
- setTitle - 设置新标题
- setContent - 设置新内容
- setImage - 设置内容的主题图片
- setOriginal - 保存原始响应
- getTitle - 结果的标题
- getContent - 结果的内容。如果您在配置中指定它,它可能已经被清理。
- getImage - 返回OG图片的URL或空字符串
- getOriginal - 只返回服务/脚本的原始响应
- isEmpty - 是否为空对象(没有数据)?
- stripContent - 手动从标签中剥离内容
- cleanContent - 手动从解析的HTML中的奇怪类、ID和样式块中清理内容
扩展
如果您想添加一个新的解析器,您必须创建一个新的类,并从\Deepslam\ContentParser\ContentParser类继承。您必须实现一个方法 - parse,它必须返回布尔值作为结果,并更改内部结果对象。
之后,您必须在 /config/deepslam/parser.php 的 parsers 数组中指定您的新类。
要使用您的解析器,在调用 ContentParser 时指定,如下所示
$parser = ContentParser::create('<your alias of parser>');
完整示例
$parser = ContentParser::create('<parser which you need>'); $parser->parse('<url to grab>'); $result = $parser->getResult(); <your_model>->name = $result->getTitle(); <your_model>->description = $result->getContent();
支持
如果您发现错误或有任何疑问和建议,您可以给我发送电子邮件:[me@ivanovdmitry.com]