deepslam/content-parser

简单的内容抓取器,可以检测各种网页上的内容

安装: 20

依赖: 0

建议: 0

安全: 0

星星: 3

观察者: 1

分支: 1

开放问题: 1

类型:laravel-package

v1.0.5 2017-06-19 12:59 UTC

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]