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 返回汉字的汉语拼音
Feb 27 Python
python使用pil生成缩略图的方法
Mar 26 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
Numpy中的mask的使用
Jul 21 Python
python 自动重连wifi windows的方法
Dec 18 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
python 监控logcat关键字功能
Sep 04 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
python从ftp获取文件并下载到本地
Dec 05 Python
python 中[0]*2与0*2的区别说明
May 10 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
安装APACHE
2007/01/15 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
2014/06/12 PHP
laravel安装和配置教程
2014/10/29 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
jQuery 常见开发使用技巧总结
2009/12/26 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
Python中datetime常用时间处理方法
2015/06/15 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
10个Python小技巧你值得拥有
2018/09/29 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
计算机科学与技术应届生求职信
2013/11/07 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
长城的导游词
2015/01/30 职场文书
五年级语文教学反思
2016/03/03 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
python中的sys模块和os模块
2022/03/20 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python