• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python实现在线程里运行scrapy的方法

Python实现在线程里运行scrapy的方法

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python scrapy,python scrapy安装,scrapy python3,python scrapy教程,python scrapy下载等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了Python实现在线程里运行scrapy的方法。分享给大家供大家参考。具体如下:

如果你希望在一个写好的程序里调用scrapy,就可以通过下面的代码,让scrapy运行在一个线程里。

"""
Code to run Scrapy crawler in a thread - works on Scrapy 0.8
"""
import threading, Queue
from twisted.internet import reactor
from scrapy.xlib.pydispatch import dispatcher
from scrapy.core.manager import scrapymanager
from scrapy.core.engine import scrapyengine
from scrapy.core import signals
class CrawlerThread(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)
    self.running = False
  def run(self):
    self.running = True
    scrapymanager.configure(control_reactor=False)
    scrapymanager.start()
    reactor.run(installSignalHandlers=False)
  def crawl(self, *args):
    if not self.running:
      raise RuntimeError("CrawlerThread not running")
    self._call_and_block_until_signal(signals.spider_closed, \
      scrapymanager.crawl, *args)
  def stop(self):
    reactor.callFromThread(scrapyengine.stop)
  def _call_and_block_until_signal(self, signal, f, *a, **kw):
    q = Queue.Queue()
    def unblock():
      q.put(None)
    dispatcher.connect(unblock, signal=signal)
    reactor.callFromThread(f, *a, **kw)
    q.get()
# Usage example below:
 
import os
os.environ.setdefault('SCRAPY_SETTINGS_MODULE', 'myproject.settings')
from scrapy.xlib.pydispatch import dispatcher
from scrapy.core import signals
from scrapy.conf import settings
from scrapy.crawler import CrawlerThread
settings.overrides['LOG_ENABLED'] = False # avoid log noise
def item_passed(item):
  print "Just scraped item:", item
dispatcher.connect(item_passed, signal=signals.item_passed)
crawler = CrawlerThread()
print "Starting crawler thread..."
crawler.start()
print "Crawling somedomain.com...."
crawler.crawl('somedomain.com) # blocking call
print "Crawling anotherdomain.com..."
crawler.crawl('anotherdomain.com') # blocking call
print "Stopping crawler thread..."
crawler.stop()
</div>

希望本文所述对大家的Python程序设计有所帮助。

</div>

您可能想查找下面的文章:

  • 使用Python的Scrapy框架十分钟爬取美女图
  • 使用Python的Scrapy框架十分钟爬取美女图
  • Python抓取框架 Scrapy的架构
  • Python使用Scrapy爬取妹子图
  • Python使用Scrapy爬取妹子图
  • 基于scrapy实现的简单蜘蛛采集程序
  • 使用Python的Scrapy框架编写web爬虫的简单示例
  • Python基于scrapy采集数据时使用代理服务器的方法
  • Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
  • Python使用scrapy采集数据过程中放回下载过大页面的方法

相关文章

  • Python新手实现2048小游戏
  • python采用requests库模拟登录和抓取数据的简单示例
  • Python的Django中django-userena组件的简单使用教程
  • Python创建模块及模块导入的方法
  • Python Django使用forms来实现评论功能
  • 在Python的Django框架中加载模版的方法
  • Python操作Excel之xlsx文件
  • 编写Python脚本把sqlAlchemy对象转换成dict的教程
  • pytyon 带有重复的全排列
  • Python模块搜索概念介绍及模块安装方法介绍

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python处理文本文件实现生成指定格式文件的方法
    • python 实现插入排序算法
    • 初步理解Python进程的信号通讯
    • python通过邮件服务器端口发送邮件的方法
    • Python程序员开发中常犯的10个错误
    • pytyon 带有重复的全排列
    • Python和perl实现批量对目录下电子书文件重命名的代码分享
    • python统计文本文件内单词数量的方法
    • Python常用小技巧总结
    • 天翼开放平台免费短信验证码接口使用实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有