gpt4 book ai didi

python - 如何从redis获取正常的url而不是通过cPikle转换的url?

转载 作者:IT王子 更新时间:2023-10-29 06:14:17 31 4
gpt4 key购买 nike

我使用scrapy-redis简单搭建了一个分布式爬虫,slave机器需要读取master队列的url,但是有一个问题是slave机器获取到的url是经过cPikle转换后的数据,我想获取url来自 redis-url-queue 的是正确的,你有什么建议?

例子:

from scrapy_redis.spiders import RedisSpider
from scrapy.spider import Spider
from example.items import ExampleLoader
class MySpider(RedisSpider):
"""Spider that reads urls from redis queue (myspider:start_urls)."""
name = 'redisspider'
redis_key = 'wzws:requests'

def __init__(self, *args, **kwargs):
super(MySpider, self).__init__(*args, **kwargs)

def parse(self, response):
el = ExampleLoader(response=response)
el.add_xpath('name', '//title[1]/text()')
el.add_value('url', response.url)
return el.load_item()

MySpider继承了RedisSpider,当我运行scrapy runspider myspider_redis.py时出现不合法的url

scrapy-redis github地址:scrapy-redis

最佳答案

scrapy-redis中使用了一些内部队列.一个用于启动 url(默认为 <spider>:start_urls ),另一个用于共享请求(默认为 <spider>:requests ),另一个用于 dupefilter。

起始 urls 队列和请求队列不能相同,因为起始 urls 队列需要单个字符串值,而请求队列需要 pickled 数据。

所以,你不应该使用 <spider>:requests作为redis_key在蜘蛛中。

如果这有帮助,请告诉我,否则请在 redis_key 中分享消息排队。

关于python - 如何从redis获取正常的url而不是通过cPikle转换的url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36127129/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com