Python实现从脚本里运行scrapy的方法


Posted in Python onApril 07, 2015

本文实例讲述了Python实现从脚本里运行scrapy的方法。分享给大家供大家参考。具体如下:

#!/usr/bin/python

import os

os.environ.setdefault('SCRAPY_SETTINGS_MODULE', 'project.settings') #Must be at the top before other imports

from scrapy import log, signals, project

from scrapy.xlib.pydispatch import dispatcher

from scrapy.conf import settings

from scrapy.crawler import CrawlerProcess

from multiprocessing import Process, Queue

class CrawlerScript():

    def __init__(self):

        self.crawler = CrawlerProcess(settings)

        if not hasattr(project, 'crawler'):

            self.crawler.install()

        self.crawler.configure()

        self.items = []

        dispatcher.connect(self._item_passed, signals.item_passed)

    def _item_passed(self, item):

        self.items.append(item)

    def _crawl(self, queue, spider_name):

        spider = self.crawler.spiders.create(spider_name)

        if spider:

            self.crawler.queue.append_spider(spider)

        self.crawler.start()

        self.crawler.stop()

        queue.put(self.items)

    def crawl(self, spider):

        queue = Queue()

        p = Process(target=self._crawl, args=(queue, spider,))

        p.start()

        p.join()

        return queue.get(True)

# Usage

if __name__ == "__main__":

    log.start()

    """

    This example runs spider1 and then spider2 three times.

    """

    items = list()

    crawler = CrawlerScript()

    items.append(crawler.crawl('spider1'))

    for i in range(3):

        items.append(crawler.crawl('spider2'))

    print items

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python实现百度关键词排名查询
Mar 30 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
详解安装mitmproxy以及遇到的坑和简单用法
Jan 21 Python
Python 复平面绘图实例
Nov 21 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
Python表达式的优先级详解
Feb 18 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
python redis存入字典序列化存储教程
Jul 16 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 Python
Python利用folium实现地图可视化
May 23 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 #Python
Python中用memcached来减少数据库查询次数的教程
Apr 07 #Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 #Python
Python中使用pprint函数进行格式化输出的教程
Apr 07 #Python
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 #Python
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 #Python
Python中尝试多线程编程的一个简明例子
Apr 07 #Python
You might like
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
浅述Javascript的外部对象
2016/12/07 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
JavaScript Event Loop相关原理解析
2020/06/10 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
python的继承知识点总结
2018/12/10 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
Python箱型图处理离群点的例子
2019/12/09 Python
Python configparser模块操作代码实例
2020/06/08 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
上班玩手机检讨书
2014/02/17 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
个人贷款担保书
2014/04/01 职场文书
2014年班组工作总结
2014/11/20 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
php将xml转化对象的实例详解
2021/11/17 PHP
vue ref如何获取子组件属性值
2022/03/31 Vue.js