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 Mysql自动备份脚本
Jul 14 Python
Python Socket编程入门教程
Jul 11 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
python之PyMongo使用总结
May 26 Python
用python与文件进行交互的方法
Mar 01 Python
python pandas dataframe 按列或者按行合并的方法
Apr 12 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
用python制作个音乐下载器
Jan 30 Python
Python机器学习实战之k-近邻算法的实现
Nov 27 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/10/09 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
php筛选不存在的图片资源
2015/04/28 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
2015/10/20 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
js单例模式的两种方案
2013/10/22 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
大学军训感言1000字
2014/02/25 职场文书
研讨会主持词
2014/04/02 职场文书
2014年会策划方案
2014/05/11 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server