如何从redis获取正常的url而不是通过url cPikle转换?
How do I get a normal url from redis rather than through url cPikle converted?
我使用scrapy-redis简单搭建了一个分布式爬虫,slave机器需要读取url form master queue url,但是有个问题是我获取到url slave机器是cPikle转换后的数据,我想从redis-url-queue中得到url是正确的,你有什么建议?
示例:
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运行spidermyspider_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
队列中分享消息。
我使用scrapy-redis简单搭建了一个分布式爬虫,slave机器需要读取url form master queue url,但是有个问题是我获取到url slave机器是cPikle转换后的数据,我想从redis-url-queue中得到url是正确的,你有什么建议?
示例:
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运行spidermyspider_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
队列中分享消息。