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 29 Python
Python中文件操作简明介绍
Apr 13 Python
使用Python构建Hopfield网络的教程
Apr 14 Python
Python异常的检测和处理方法
Oct 26 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
pytorch程序异常后删除占用的显存操作
Jan 13 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
Apr 08 Python
Python的历史与优缺点整理
May 26 Python
Python pymysql模块安装并操作过程解析
Oct 13 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
python 对图片进行简单的处理
Jun 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
Python深入学习之闭包
2014/08/31 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
工商学院毕业生自荐信
2013/11/12 职场文书
班长自荐书范文
2014/02/11 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
安全先进班组材料
2014/12/26 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android