Skip to main content

Rabbitmq for Distributed scraping

Project description

*** 1.0.4 版本新增功能** *

版本新增配置任务队列优先级,以用来支持有优先级的消息队列

#在settings.py 新增系列配置即可
'QUEUE_X_MAX_PRIORITY': 10

Scrapy分布式RabbitMQ调度器

安装

使用pip安装

pip install scrapy-rabbitmq-task

或者克隆这个项目并且执行setup.py安装

python setup.py install

使用

第一步: 在你的项目中的settings.py中添加配置项

# 指定项目的调度器
SCHEDULER = "scrapy_rabbitmq_scheduler.scheduler.SaaS"

# 指定rabbitmq的连接DSN
RABBITMQ_CONNECTION_PARAMETERS = 'amqp://guest:guest@localhost:5672/'

# 指定重试的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,
}

第二步: 修改Spider的继承类

import scrapy
from scrapy_rabbitmq_scheduler.spiders import RabbitSpider

class CustomSpider(RabbitSpider):
    name = 'custom_spider'    
    queue_name = 'test_urls' # 指定任务队列的名称
    items_key = 'test_item' # 指定item队列名称

    def parse(self, response):
        item = ... # parse item
        yield item

第三步: 将任务写入到RabbitMQ队列

#!/usr/bin/env python
import pika
import settings

connection = pika.BlockingConnection(pika.URLParameters(settings.RABBITMQ_CONNECTION_PARAMETERS))
channel = connection.channel()

queue_key = 'test_urls'

# 读取文件中的链接并写入到队列中
with open('urls.txt') as f:
    for url in f:
        url = url.strip(' \n\r')
        channel.basic_publish(exchange='',
                        routing_key=queue_key,
                        body=url,
                        properties=pika.BasicProperties(
                            content_type='text/plain',
                            delivery_mode=2
                        ))

connection.close()

urls.txt

http://www.baidu.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scrapy_rabbitmq_task-1.0.4.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scrapy_rabbitmq_task-1.0.4-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file scrapy_rabbitmq_task-1.0.4.tar.gz.

File metadata

  • Download URL: scrapy_rabbitmq_task-1.0.4.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.5

File hashes

Hashes for scrapy_rabbitmq_task-1.0.4.tar.gz
Algorithm Hash digest
SHA256 db523fab2dfeae927bbffe0896a53c8919da78f00857a01224431c732b916af7
MD5 12dc7910641acb78d91b5e7d1532cad4
BLAKE2b-256 be478144752802c4854ba359da3850983ff126b6f111a39e508dbfcb975e5f2c

See more details on using hashes here.

File details

Details for the file scrapy_rabbitmq_task-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for scrapy_rabbitmq_task-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 dfc837049bd6185febe21de5d15dcc80bccafd2e86572fb1b611cd8ab261ece0
MD5 781dff4477a6febcc6cf303b663a523b
BLAKE2b-256 b4937916d6f0052ea50d7995845a2fc5c20f86d48c0d1f9d7c7aab4a5cfd7acd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page