01 pyspider
一、什么是Pyspider框架
python 脚本控制,可以用任何你喜欢的html解析包(内置 pyquery)
WEB 界面编写调试脚本,起停脚本,监控执行状态,查看活动历史,获取结果产出
数据存储支持MySQL, MongoDB, Redis, SQLite, Elasticsearch; PostgreSQL 及 SQLAlchemy
队列服务支持RabbitMQ, Beanstalk, Redis 和 Kombu
支持抓取 JavaScript 的页面
组件可替换,支持单机/分布式部署,支持 Docker 部署
强大的调度控制,支持超时重爬及优先级设置
支持python2&3
二、简单实用
1、启动pyspider
命令行输入
pyspider
2、打开127.0.0.1:5000页面
3、create按钮创建项目
在web控制台点create按钮新建任务,项目名自定义。本例项目名为v2ex。
4、代码编写
保存后打开代码编辑器(代码编辑器默认有简单的实例代码)
右侧就是代码编辑器,以后可以直接在这添加修改代码。代码如下:
代码简单分析:
- def on_start(self) 方法是入口代码。当在web控制台点击run按钮时会执行此方法。
- self.crawl(url, callback=self.index_page)这个方法是调用API生成一个新的爬取任务,这个任务被添加到待抓取队列。
- def index_page(self, response) 这个方法获取一个Response对象。
- response.doc是pyquery对象的一个扩展方法。
- pyquery是一个类似于jQuery的对象选择器。
- def detail_page(self, response)返回一个结果集对象。这个结果默认会被添加到resultdb数据库(如果启动时没有指定数据库默认调用sqlite数据库)。你也可以重写on_result(self,result)方法来指定保存位置。
更多知识:
- @every(minutes=24*60, seconds=0) 这个设置是告诉scheduler(调度器)on_start方法每天执行一次。
- @config(age=10 * 24 * 60 * 60) 这个设置告诉scheduler(调度器)这个request(请求)过期时间是10天,10天内再遇到这个请求直接忽略。这个参数也可以在self.crawl(url, age=102460*60) 和 crawl_config中设置。
- @config(priority=2) 这个是优先级设置。数字越大越先执行。
5、执行任务
- 当您完成脚本编写,调试无误后,请先保存您的脚本!然后返回到控制台首页。
- 直接点击项目状态status那栏,把状态由TODO改成debug或running。
- 最后点击项目最右边那个RUN按钮启动项目。
- 当progress那栏有数据显示说明启动成功。到现在就可以点最右侧的results查看结果了。
网友评论