PySpider
国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。
主要的功能需求是:
- 抓取、更新调度多站点的特定的页面
- 需要对页面进行结构化信息提取
- 灵活可扩展,稳定可监控 而这也是绝大多数python爬虫的需求 —— 定向抓取,结构化化解析。但是面对结构迥异的各种网站,单一的抓取模式并不一定能满足,灵活的抓取控制是必须的。为了达到这个目的,单纯的配置文件往往不够灵活,于是,通过脚本去控制抓取是我最后的选择。 而去重调度,队列,抓取,异常处理,监控等功能作为框架,提供给抓取脚本,并保证灵活性。最后加上web的编辑调试环境,以及web任务监控,即成为了这套框架。
安装
添加依赖
sudo apt-get install python python-dev python-distribute python-pip libcurl4-openssl-dev libxml2-dev libxslt1-dev python-lxml libssl-dev zlib1g-dev
sudo apt-get install phantomjs
pip3 install pyspider
启动:
pyspider all
编写一个pyspider项目
class Handler(BaseHandler):
"""
Handler 就是 pyspider 爬虫的主类,我
们可以在此处定义爬取、解析、存储的逻辑。
整个爬虫的功能只需要一个 Handler 即可完成
"""
#crawl_config 属性。我们可以将本项目的
#所有爬取配置统一定义到这里,如定义
#Headers、设置代理等,配置之后全局生效
crawl_config = {url:要抓取的url或url列表。
headers:请求头
callback:解析响应的方法
priority:任务的优先级越高越好。默认值:0
exetime:时间戳中任务的执行时间。默认值:0(马上)
itag:显示任务的潜在修改的前沿页标记。当它被更改时,将与它的最后一个值recrawl进行比较。默认值:无
method:请求方式
params:要追加到URL的URL参数的字典。
data:附加到请求的主体。如果提供了字典,就会进行表单编码。
user_agent:请求的用户代理
cookies:附加到此请求的cookie字典。
validate_cert:对于HTTPS请求,验证服务器的证书,默认值:True
proxy:代理,目前只支持http代理。
}