将 url 传递到从 RabbitMQ 消费的 scrapy 中的 parse 方法

2023-12-21

我正在使用 scrapy 来消费来自 RabbitMQ 的消息(url),但是当我使用yield 调用将我的 url 作为参数传递的解析方法时。该程序不在回调方法中。下面是我的以下代码蜘蛛

# -*- coding: utf-8 -*-
import scrapy
import pika
from scrapy import cmdline
import json

class MydeletespiderSpider(scrapy.Spider):
    name = 'Mydeletespider'
    allowed_domains = []
    start_urls = []

def callback(self,ch, method, properties, body):
    print(" [x] Received %r" % body)
    body=json.loads(body)
    url=body.get('url')
    yield scrapy.Request(url=url,callback=self.parse)

def start_requests(self):
    cre = pika.PlainCredentials('test', 'test')
    connection = pika.BlockingConnection(
        pika.ConnectionParameters(host='10.0.12.103', port=5672, credentials=cre, socket_timeout=60))
    channel = connection.channel()



    channel.basic_consume(self.callback,
                          queue='Deletespider_Batch_Test',
                          no_ack=True)


    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()

def parse(self, response):
    print response.url
    pass

cmdline.execute('scrapy crawl Mydeletespider'.split())

我的目标是将 url 响应传递给解析方法


要使用来自rabbitmq的url,你可以看看scrapy-rabbitmq https://github.com/roycehaynes/scrapy-rabbitmq包裹:

Scrapy-rabbitmq 是一个工具,可让您使用 Scrapy 框架通过 Scrapy 蜘蛛从 RabbitMQ 提供 URL 并对其进行排队。

要启用它,请在您的settings.py:

# Enables scheduling storing requests queue in rabbitmq.
SCHEDULER = "scrapy_rabbitmq.scheduler.Scheduler"
# Don't cleanup rabbitmq queues, allows to pause/resume crawls.
SCHEDULER_PERSIST = True
# Schedule requests using a priority queue. (default)
SCHEDULER_QUEUE_CLASS = 'scrapy_rabbitmq.queue.SpiderQueue'
# RabbitMQ Queue to use to store requests
RABBITMQ_QUEUE_NAME = 'scrapy_queue'
# Provide host and port to RabbitMQ daemon
RABBITMQ_CONNECTION_PARAMETERS = {'host': 'localhost', 'port': 6666}

# Bonus:
# Store scraped item in rabbitmq for post-processing.
# ITEM_PIPELINES = {
#    'scrapy_rabbitmq.pipelines.RabbitMQPipeline': 1
# }

在你的蜘蛛中:

from scrapy import Spider
from scrapy_rabbitmq.spiders import RabbitMQMixin

class RabbitSpider(RabbitMQMixin, Spider):
    name = 'rabbitspider'

    def parse(self, response):
        # mixin will take urls from rabbit queue by itself
        pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 url 传递到从 RabbitMQ 消费的 scrapy 中的 parse 方法 的相关文章

  • 如何在 Rselenium 中释放按键

    我尝试使用以下命令成功按下控制键 rD lt rsDriver browser chrome chromever latest port 4445L chrome client lt rD client chrome client send
  • 如何使用 scrapy 合约?

    Scrapy 合约问题 我开始研究 scrapy 框架 也实现了一些蜘蛛 提取 但我无法为蜘蛛编写单元测试用例 因为合同 scrapy提供的包文档没有正确的程序来编写 测试用例 请帮我解决这件事 Yes 蜘蛛合约 http doc scra
  • Beautiful Soup 中 find_all 方法的返回类型是什么?

    from bs4 import BeautifulSoup SoupStrainer from urllib request import urlopen import pandas as pd import numpy as np imp
  • 使用scrapy到json文件只得到一行输出

    好吧 我对一般编程很陌生 并且具体使用 Scrapy 来实现此目的 我编写了一个爬虫来从 pinterest com 上的 pin 获取数据 问题是我以前从我正在抓取的页面上的所有引脚获取数据 但现在我只获取第一个引脚的数据 我认为问题出在
  • MassTransit 生成我想忽略的_skipped 队列

    任何人都可以猜出问题是什么 因为我不知道如何解决这个问题 大众运输产生 skipped队列 我不知道为什么它会生成这些队列 它是在执行发布请求响应时生成的 请求客户端是使用 MassTransit RequestClientExtensio
  • 如何使用生成器遍历文件系统?

    我正在尝试创建一个实用程序类来遍历目录中的所有文件 包括子目录和子子目录中的文件 我尝试使用发电机 因为发电机很酷 然而 我遇到了困难 def grab files directory for name in os listdir dire
  • 学院/大学数据 API [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试构建一个应用程序 允许用户查找特定大学并查看有关该大学的数据 录取率 SAT 分数 规模等 但
  • Rvest 从 select 中提取选项值和文本

    Rvest 选择选项 我认为用可重现的示例来解释是最简单的 网站 http www verema com vinos portada http www verema com vinos portada我想获取葡萄酒的类型 Tipos de
  • PHPQuery WebBrowser 插件 - 使用 cookies

    我正在尝试使用 PHPQuery 的 WebBrowser 插件登录网站 我能够成功登录 但我不确定如何重用上一次调用中的 cookie 到下一次调用 client phpQuery browserGet https website com
  • 从html中获取属性字符串值

    我正在构建一个宏来使用从网站提取数据vba questions tagged vba 目前 我可以使用元素语法轻松地从表内容中获取值 例如obj getElementsByTagName td innerText 但是 当某些单元格中有一些
  • 网页抓取(R 语言?)

    我想获取中间栏中的公司名称this http www consumercomplaints in bysubcategory mobile service providers page 1 html页面 以蓝色粗体书写 以及登记投诉者的位置
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • 在同一进程中多次运行Scrapy

    我有一个网址列表 我想抓取其中的每一个 请注意 将此数组添加为start urls不是我正在寻找的行为 我希望它在单独的爬网会话中一一运行 我想在同一个进程中多次运行Scrapy 我想将 Scrapy 作为脚本运行 如常见做法 https
  • 基于多线程的 RabbitMQ 消费者

    我们有一个 Windows 服务 它监听单个 RabbitMQ 队列并处理消息 我们希望扩展相同的 Windows 服务 以便它可以监听 RabbitMQ 的多个队列并处理消息 不确定使用多线程是否可以实现这一点 因为每个线程都必须侦听 阻
  • scrapy python 请求未定义

    我在这里找到了答案 code for site in sites Link site xpath a href extract CompleteLink urlparse urljoin response url Link yield Re
  • Amazon EC2 实例上和本地的 RabbitMQ?

    是否可以设置一个RabbitMQ服务器上的Amazon EC2 instance 并将我办公室的机器连接到此RabbitMQ服务器并向其发送 接收消息 我会被收取费用吗Amazon对于流入 流出我的带宽 消息RabbitMQ EC2 ins
  • 访问 Scrapy 内的 django 模型

    是否可以在 Scrapy 管道内访问我的 django 模型 以便我可以将抓取的数据直接保存到我的模型中 我见过this https scrapy readthedocs org en latest topics djangoitem ht
  • Python BS4 Scraper 仅返回每个页面的前 9 个结果

    我让这段代码按预期工作 只是它并没有完全按预期工作 一切似乎都很顺利 直到我检查了我的 csv 输出文件并注意到我每页只得到前 9 个结果 每页应该有 40 个结果 因此我得到的结果少于预期的 25 有什么想法吗 import reques
  • 错误:尝试使用 scrappy 登录时出现 raise ValueError("No element found in %s" % response)

    问题描述 我想从我大学的bbs上抓取一些信息 这是地址 http bbs byr cn http bbs byr cn下面是我的蜘蛛的代码 from lxml import etree import scrapy try from scra

随机推荐