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从ftp下载数据保存实例
Nov 20 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
Python字符串逐字符或逐词反转方法
May 21 Python
Python 常用string函数详解
May 30 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
对pandas中apply函数的用法详解
Apr 10 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
python Tcp协议发送和接收信息的例子
Jul 22 Python
python写程序统计词频的方法
Jul 29 Python
Keras-多输入多输出实例(多任务)
Jun 22 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
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
vue 基于abstract 路由模式 实现页面内嵌的示例代码
2020/12/14 Vue.js
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
python动态进度条的实现代码
2019/07/03 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
python可以用哪些数据库
2020/06/22 Python
python实现最短路径的实例方法
2020/07/19 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
html5的canvas方法使用指南
2014/12/15 HTML / CSS
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
JAVA招聘远程笔试题
2015/07/23 面试题
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
单位计划生育责任书
2015/05/09 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
创业计划书之便利店
2019/09/05 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
一篇文章看懂MySQL主从复制与读写分离
2021/11/07 MySQL
CSS实现九宫格布局(自适应)的示例代码
2022/02/12 HTML / CSS
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android