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运行时间的几种方法
Jun 17 Python
django2 快速安装指南分享
Jan 05 Python
python 爬虫 批量获取代理ip的实例代码
May 22 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
python+pyqt5编写md5生成器
Mar 18 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
python怎么判断模块安装完成
Jun 19 Python
Django-Scrapy生成后端json接口的方法示例
Oct 06 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
python装饰器代码解析
Mar 23 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
15种PHP Encoder的比较
2007/03/06 PHP
php下连接mssql2005的代码
2011/01/17 PHP
php class类的用法详细总结
2013/10/17 PHP
PHP数据过滤的方法
2013/10/30 PHP
PHP错误机制知识汇总
2016/03/24 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
jquery如何获取复选框的值
2013/12/12 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
Vue兼容ie9的问题全面解决方案
2018/06/19 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
Python删除windows垃圾文件的方法
2015/07/14 Python
python flask 多对多表查询功能
2017/06/25 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
python实现简单flappy bird
2018/12/24 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
python路径的写法及目录的获取方式
2019/12/26 Python
Python短信轰炸的代码
2020/03/25 Python
python对execl 处理操作代码
2020/06/22 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
经典c++面试题三
2015/07/08 面试题
自荐信如何“自荐”
2013/10/24 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
2015年党小组工作总结
2015/05/26 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
Vue3中的Refs和Ref详情
2021/11/11 Vue.js