Я хочу разрешить Scrapy получить сообщение от RabbitMQ, а затем сохранить проанализированные данные в MongoDB.
Я использую scrapy-rabbitmq-link , чтобы получить сообщениеот RabbitMQ прямо сейчас.У меня есть следующие настройки в settings.py
# Enables scheduling storing requests queue in rabbitmq.
SCHEDULER = "scrapy_rabbitmq_link.scheduler.SaaS"
# Provide AMQP connection string
RABBITMQ_CONNECTION_PARAMETERS = 'amqp://admin:password@localhost:5672/'
# Set response status codes to requeue messages on
SCHEDULER_REQUEUE_ON_STATUS = [500]
# Middleware acks RabbitMQ message on success
DOWNLOADER_MIDDLEWARES = {
'scrapy_rabbitmq_link.middleware.RabbitMQMiddleware': 10
}
Текущий паук
class TestSpider(scrapy.Spider):
name = "TestSpider"
amqp_key = 'news'
def _make_request(self, mframe, hframe, body):
print('######## url ##########')
item = json.loads(body)
articleLink = item['url']
print(articleLink)
return scrapy.Request(articleLink, callback=self.parse)
def parse(self, response):
print('######## Parse article ##########')
articleBody = response.css('div.StandardArticleBody_body ::text').extract_first()
print('######## Article body ##########')
print(articleBody)
yield {
'body': articleBody
}
В настоящее время я могу получить сообщение от RabbitMQ, но не знаю, как сохранить элементв MongoDB
Если я добавлю
item = TutorialItem()
item['title'] = article.css('h3.storytitle::text').extract_first().strip()
item['body'] = articleBody.strip()
yield item
в функции parse
паука и сохраню элемент в MongoDB в линиях.Я обнаружил, что всегда добавлять новые сообщения в RabbitMQ вместо того, чтобы потреблять сообщения.Я чувствую, что это связано с SCHEDULER = "scrapy_rabbitmq_link.scheduler.SaaS"
Есть предложения?