daa / web-scraping-sdk
简化网页抓取的Composer包
v1.1
2014-12-21 23:28 UTC
Requires
- php: >=5.3.3
- ext-curl: *
- daa/restful-curl-php-wrapper: 1.*
Requires (Dev)
- phpunit/phpunit: ~3.7
This package is not auto-updated.
Last update: 2024-09-24 03:28:37 UTC
README
这是一个Composer包,简化了网页内容的抓取,提供了一个轻量级且易于使用的代码库。
简单扩展提供的Scraper类并实现gather()方法,使用xpaths提取所需内容。然后可以将这些内容输出到文件、存储到数据库、返回json字符串等。
亮点
- 基于XPath的内容提取
- 只需实现一个方法
- 允许轻松文件写入、数据库存储或格式化字符串/对象返回
- PSR2编码标准
- 使用cURL从指定源检索内容
- 可配置失败尝试的重试次数和暂停时间
- 轻松跟随链接以获取更多内容
Packagist链接:https://packagist.org.cn/packages/daa/web-scraping-sdk
使用方法
将以下要求添加到您的composer文件中,并执行composer install/update
"require": {
...
"daa/web-scraping-sdk: "1.*"
},
编写自己的scraper类,该类扩展Scraper\Sdk\WebScraper并实现gather方法
namespace Your\Package\Scraper;
use Scraper\Sdk\WebScraper;
class YourScraper extends WebScraper
{
/**
* {@inheritdoc}
*/
protected function gather(\DOMXPath $dom)
{
$nodes = $dom->query(".//article[@class='product']");
foreach ($nodes as $node) {
...
// follow a url and extract more data
$linkDom = $this->getLinkContent($node->getElementsByTagName('a')->item(0));
$linkDom->query...
}
}
}
现在调用您的类,例如从由cron作业执行的脚本
require __DIR__.'/../vendor/autoload.php';
$scraper = new Your\Package\Scraper\YourScraper('http://www.someurl.com/with/content/');
$scraper->execute();
对于有问题的源,您可以指定重试配置(默认为3次重试,每次暂停3秒)
$scraper = new Your\Package\Scraper\YourScraper('http://www.someurl.com/with/content/', $retryAttempts, $pauseSeconds);
$scraper->execute();
您可以使用相同的实例抓取具有相同结构的多个url
$pages = array(
'http://www.someurl.com/section-one/',
'http://www.someurl.com/section-two/page1',
'http://www.someurl.com/section-one/page2'
);
$scraper = new Your\Package\Scraper\YourScraper();
foreach ($pages as $url) {
$scraper->setSource($url);
$scraper->execute();
}
查看示例文件夹以获取更多详细信息和工作示例。