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编写检测数据库SA用户的方法
Jul 11 Python
Python生成pdf文件的方法
Aug 04 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
python实现蒙特卡罗方法教程
Jan 28 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
Python拆分大型CSV文件代码实例
Oct 07 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
Python如何合并多个字典或映射
Jul 24 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
利用python做表格数据处理
Apr 13 Python
从np.random.normal()到正态分布的拟合操作
Jun 02 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中慎用双等于(==)的详解
2013/06/06 PHP
解析php中获取系统信息的方法
2013/06/25 PHP
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
angularjs基础教程
2014/12/25 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
Python实现的归并排序算法示例
2017/11/21 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
python小白学习包管理器pip安装
2020/06/09 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
空中乘务员岗位职责
2014/03/08 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
小学生作文评语
2014/04/18 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
个人投资合作协议书
2014/10/12 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
鉴史问廉观后感
2015/06/10 职场文书
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js
MySQL去除密码登录告警的方法
2022/04/20 MySQL