美文网首页
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