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 26 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 Python
Python3学习urllib的使用方法示例
Nov 29 Python
python的socket编程入门
Jan 29 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
详解Python字典的操作
Mar 04 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
python中shell执行知识点
May 06 Python
PyCharm中如何直接使用Anaconda已安装的库
May 28 Python
Python爬虫获取页面所有URL链接过程详解
Jun 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 选项及相关信息函数库
2006/12/04 PHP
php 获取本机外网/公网IP的代码
2010/05/09 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
es6在react中的应用代码解析
2017/11/08 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
python dataframe NaN处理方式
2019/12/26 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
保密工作责任书
2014/04/16 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
员工安全生产责任书
2014/07/22 职场文书
房产协议书范本2014
2014/09/30 职场文书
2014最新实习证明模板
2014/10/02 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
趣味运动会赞词
2015/07/22 职场文书