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的urllib库提交WEB表单
Feb 24 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 Python
Django与遗留的数据库整合的方法指南
Jul 24 Python
Python实现在线音乐播放器
Mar 03 Python
python 系统调用的实例详解
Jul 11 Python
pandas数据预处理之dataframe的groupby操作方法
Apr 13 Python
Python并发:多线程与多进程的详解
Jan 24 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
django-filter和普通查询的例子
Aug 12 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
python 日志模块logging的使用场景及示例
Jan 04 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将数据导入到Foxmail
2006/10/09 PHP
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
JS画线(实例代码)
2013/11/20 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
不得不知的ES6小技巧
2018/07/28 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
最新2019Pycharm安装教程 亲测
2020/02/28 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
师德学习感言
2014/01/31 职场文书
简历的自我评价范文
2014/02/04 职场文书
《美丽的小路》教学反思
2014/02/26 职场文书
电子商务优秀毕业生求职信
2014/07/11 职场文书
2016大一新生军训感言
2015/12/08 职场文书
JavaScript文档对象模型DOM
2021/11/20 Javascript
mysql自增长id用完了该怎么办
2022/02/12 MySQL