Behrendt / web-scraper
此包可用于从网站抓取元素。
v1.1.0
2020-04-25 06:05 UTC
Requires
- php: ^7.4
- spatie/crawler: ^4.7
- symfony/console: ^5.0
- tightenco/collect: ^7.6
Requires (Dev)
- phpunit/phpunit: ^9
- symfony/process: ^5.0
- symfony/var-dumper: ^5.0
This package is auto-updated.
Last update: 2024-09-15 18:59:03 UTC
README
此包可用于从网站抓取元素。它封装了出色的 Spatie Crawler(因为我不想重新发明轮子,只构建另一个爬虫)。
爬虫预先配置为仅从给定的起始点抓取内部URL。
安装
可以使用 Composer 安装此包
composer require danielbehrendt/web-scraper
客户端选项
可以通过传递给页面检查器的构造函数来设置爬虫的客户端选项
$webScraper = new WebScraper([
'allow_redirects' => true
]);
Spatie Crawler 在底层使用 Guzzle,因此可以传递所有 请求选项。
爬虫选项
可以通过选项参数设置以下选项(来自 Spatie Crawler)
$results = $webScraper->getResults(
$url,
[
'userAgent' => 'my-agent',
'concurrency' => 1,
'maximumCrawlCount' => 5,
'maximumDepth' => 5,
'maximumResponseSize' => 1024 * 1024 * 3,
'delayBetweenRequests' => 150,
'parseableMimeTypes' => [
'text/html', 'text/plain',
],
]
);
使用方法
可以通过这种方式实例化网络爬虫
use DanielBehrendt\WebScraper\WebScraper;
$webScraper = new WebScraper();
获取结果
$url
必须是绝对路径,以方案开头。
$results = $webScraper->getResults($url);
getResults
方法返回一个 Laravel Collection,因此支持所有 可用方法。
爬虫器
可以通过 setScraper
方法设置爬虫实例。
$webScraper->setScraper(new MarkupScraper());
此包包含一些 Scrapers
HeaderScraper
:返回每个被爬取页面的头部信息和状态码(默认爬虫器)MarkupScraper
:抓取每个被爬取页面的部分标记(不会返回头部信息和状态码)UnencryptedEmailScraper
抓取每个被爬取页面标记中的未加密电子邮件(不会返回头部信息和状态码)
完整示例
<?php
use DanielBehrendt\WebScraper\WebScraper;
use DanielBehrendt\WebScraper\Scrapers\MarkupScraper;
$webScraper = new WebScraper();
$results = $webScraper
->setScraper(new MarkupScraper())
->getResults('https://httpbin.org/html');
添加您自己的爬虫
您可以定义自己的爬虫并通过 setScraper
方法设置它。传递的对象必须扩展抽象类 \DanielBehrendt\WebScraper\Scraper\BaseScraper
,并且必须有一个 getElementSelectors
方法。
示例
<?php
use DanielBehrendt\WebScraper\Scrapers\BaseScraper;
class CustomScraper extends BaseScraper
{
/**
* return array
*/
public function getElementSelectors(): array
{
return [
'h1' => [
'filter' => '//h1/text()',
],
'h2' => [
'filter' => '//h2/text()',
],
'h3' => [
'filter' => '//h3/text()',
],
];
}
}
命令行界面(CLI)
此包还包含一些 CLI 命令
./console web-scraper:header
./console web-scraper:markup
./console web-scraper:unencrypted-email
每个命令对应于上述提到的 Scrapers
之一。
变更日志
请参阅 CHANGELOG 了解最近更改的信息。
许可证
MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。