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的Django框架中为代码添加注释的方法
Jul 16 Python
python list排序的两种方法及实例讲解
Mar 20 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
python计算列表内各元素的个数实例
Jun 29 Python
Python Matplotlib库安装与基本作图示例
Jan 09 Python
python版DDOS攻击脚本
Jun 12 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
python处理excel绘制雷达图
Oct 18 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
python 命令行传参方法总结
May 25 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
BBS(php & mysql)完整版(一)
2006/10/09 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
javascript事件模型代码
2007/07/01 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
详解JavaScript树结构
2017/01/09 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
如何用python整理附件
2018/05/13 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
Python生成词云的实现代码
2020/01/14 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2014年生产部工作总结
2014/12/17 职场文书
成事在人观后感
2015/06/16 职场文书
小学体育教学随笔
2015/08/14 职场文书
用Python远程登陆服务器的步骤
2021/04/16 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
2021/06/11 Python
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python