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 相关文章推荐
以windows service方式运行Python程序的方法
Jun 03 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
python中字符串比较使用is、==和cmp()总结
Mar 18 Python
Python3使用正则表达式爬取内涵段子示例
Apr 22 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
Python3实现定时任务的四种方式
Jun 03 Python
pandas 空数据处理方法详解
Nov 02 Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
Jan 09 Python
python垃圾回收机制原理分析
Apr 13 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获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
PHP实现删除非站内外部链接实例代码
2014/06/17 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
jQuery TextBox自动完成条
2009/07/22 Javascript
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
vue treeselect获取当前选中项的label实例
2020/08/31 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
对于Python中RawString的理解介绍
2016/07/07 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
Python实现对adb命令封装
2020/03/06 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
美国保健品专家:Life Extension
2018/05/04 全球购物
教师通用专业自荐书范文
2014/02/11 职场文书
气象学专业个人求职信
2014/03/15 职场文书
社会实践评语
2014/04/28 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js