rabbitmq 连接失败捕获_scrapy如何用rabbitmq做分布式爬虫

git地址: https://github.com/aox-lei/scrapy-rabbitmq-scheduler

一、安装

pip install scrapy-rabbitmq-scheduler

二、初始化scrapy项目

scrapy startproject example

三、配置调度器以及下载器

在项目的settings.py中增加以下配置项

# 指定配置器
SCHEDULER = "scrapy_rabbitmq_scheduler.scheduler.SaaS"
# 指定rabbitmq服务的地址
RABBITMQ_CONNECTION_PARAMETERS = 'amqp://guest:guest@localhost:5672/?heartbeat=0'
# 指定重新加回队列的http状态码
SCHEDULER_REQUEUE_ON_STATUS = [500]
# 指定下载器处理
DOWNLOADER_MIDDLEWARES = {
'scrapy_rabbitmq_scheduler.middleware.RabbitMQMiddleware': 999
}
# 指定item处理, 将item推送到rabbitmq中
ITEM_PIPELINES = {
    'scrapy_rabbitmq_scheduler.pipelines.RabbitmqPipeline': 300,
}

四、编写爬虫代码

# -*- coding: utf-8 -*-
import scrapy
from scrapy_rabbitmq_scheduler.spiders import RabbitSpider
from example.items import ArticleItem


class CcidcomSpider(RabbitSpider):
    name = 'ccidcom'
    allowed_domains = ['ccidcom.com']
    start_urls = ['http://www.ccidcom.com/']
    # 队列名称
    queue_name = 'ccidcom'
    # item队列名称
    items_key = 'item_ccidcom'

    def parse(self, response):
        navigation_list = response.css(
            '#nav > div.nav-main.clearfix > ul > li > div > a::attr("href")')
        for _link in navigation_list:
            yield response.follow(_link,
                                  dont_filter=True,
                                  callback=self.parse_list)

    def parse_list(self, response):
        article_list = response.css('div.article-item')
        for info in article_list:
            item = ArticleItem()
            item['title'] = info.css('div.title a>font::text').get()
            item['url'] = info.css('div.title a::attr("href")').get()
            yield item

五、运行代码

scrapy crawl ccidcom

712db97543a47aa2a9d88f877d3d3a48.gif

欢迎关注微信公众号:Python开发之路(微信号: python-developer)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值