webjson / spiderman
There is no license information available for the latest version (1.0.8) of this package.
php版的爬虫框架
1.0.8
2017-10-12 02:44 UTC
Requires
- php: >=5.6
- ext-mbstring: *
- ext-tidy: *
- rmccue/requests: ^1.7
- stil/xpath-selector: ^2.0
Requires (Dev)
- predis/predis: ^1.1
README
spiderman是一个爬虫框架,php的版本需要5.6以上
总体架构
spiderman由Downloader
、PageProcessor
、Scheduler
、Pipeline
四大组件组成,并由Spider将他们组合起来。
这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。
四大组件
- Downloader:负责从互联网上下载页面,以便后续处理,spiderman默认使用rmccue/requests作为下载工具。默认的下载器,如果网页设置了编码,但是不是utf-8,将会把网页转换为utf-8
- PageProcessor:负责页面解析,以及发现新链接,因为每个站点的页面都不同,需要使用者自己定制这部分,spiderman默认提供了xpath的解析基于(stil/xpath-selector)。
- Scheduler:负责管理待抓取的url,以及一些去重工作,默认提供了给予内存的管理,除非要爬取的网站是一个比较大型的网站或者有分布式的需求,否则无需自己定制该组件。
- Pipeline:负责处理后的后续处理,比较数据的保存等。
使用定制的Scheduler
内置了几种常见的Scheduler,如果你只是在本地执行规模比较小的爬虫,那么基本无需定制Scheduler。
- IScheduler:抽象基类,继承他可以实现自己的功能。
- QueueScheduler:基于内存的的队列管理,当站点比较大的时候,比较耗内存,spiderman默认的管理器。
- FileCacheQueueScheduler:基于文件的队列管理,可以在关闭程序并下次启动时,从之前抓取到的URL继续抓取,需指定$urlsFile和$cursorFile。
- RedisScheduler:使用Redis保存抓取队列,可分布式的抓取,需要安装predis/predis