美文网首页
07 pyspider

07 pyspider

作者: yungege | 来源:发表于2019-08-05 22:43 被阅读0次

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查看结果了。

相关文章

网友评论

      本文标题:07 pyspider

      本文链接:https://www.haomeiwen.com/subject/mvtbdctx.html