slince / spider
Slince Spider
dev-master
2017-02-14 14:33 UTC
Requires
- php: >=5.5.9
- bupt1987/html-parser: ~3.0
- guzzlehttp/guzzle: ~6.2
- hoa/mime: ~3.0
- monolog/monolog: ^1.22
- slince/config: *
- slince/event: *
- symfony/console: ~3.0
- symfony/filesystem: ~3.0
Requires (Dev)
- phpunit/phpunit: ^5.6
This package is auto-updated.
Last update: 2024-12-08 18:35:12 UTC
README
网页爬行工具
安装
composer global require slince/spider *@dev
Basic Usage
创建一个Spider并启动
use Slince\Spider\Spider;
$spider = new Spider();
$spider->run('http://www.baidu.com');
设置黑/白名单
//白名单
$spider = setWhiteUriPatterns([
'/page-foo-regex/'
]);
//黑名单
$spider = setBlackUriPatterns([
'/page-bar-regex/'
]);
//需要提供标准可用的正则表达式
example:
$spider = setBlackUriPatterns([
'/page-bar-regex/'
]);
事件 Spider在调度过程中会触发下面几个事件
- filterUri 过滤url事件,如果某个链接通过了spider的验证则会触发该事件;客户端可以通过监听该事件对链接做 进一步审查,如果设置不通过Spider会放弃对该链接的爬取 example:
//...
/**
* 过滤链接事件
* @param FilterUriEvent $event
*/
public function onFilterUri(FilterUriEvent $event)
{
$uri = $event->getUri();
if ($uri->getHost() != 'baidu.com') {
$event->skipThis(); //如果不是百度的链接跳过
}
}
//...
- collectUri 开始采集链接
- downloadUriError 链接内容下载失败
- COLLECT_ASSET_URI 开始处理该链接下面资源链接
- COLLECT_COLLECTED_ASSET_URI_URI 该链接下面资源链接处理完毕
- collectedUri 页面链接处理完毕(包括页面资源内容链接,图片,样式文件链接等),开始处理页面下面其它页面链接
命令行工具
采集整站模板
example: 采集百度的模板
spider collect http://www.baidu.com
你可以使用json文件进行配置,进行更精细化的优化,详细模板参见 spider.json 拷贝spider.json到工作目录,修改配置后执行
spider collect