我使用scrapy简单地构建了一个分布式爬虫,从机器需要读取url形式的主队列url,但是有一个问题是,我到达url从机器是在cPikle转换后的数据,我想从redis- url队列中获得url是正确的,您有什么建议?
示例:
from scrapy_redis.spiders import RedisSpider
from scrapy.spider import Spider
from example.items import ExampleLoader
class MySpider(RedisSpider):
"""Spider that reads urls f
# -*- coding: utf-8 -*- from scrapy_redis.spiders import RedisSpider from scrapy.spider import Request
from scrapy_redis_slaver.items import MzituSlaverItem
class MzituSpider(RedisSpider):
name = 'mzitu'
redis_key = 'mzitu:start_urls' # get start url from redis
def
我试图迭代传递给scrapy请求的回调的URL返回列表,但是我得到了以下错误:
TypeError: 'Request' object is not iterable
下面的工作。我可以看到所有提取的URL都淹没了终端:
import scrapy
class PLSpider(scrapy.Spider):
name = 'pl'
start_urls = [ 'https://example.com' ]
def genres(self, resp):
for genre in resp.css(&
我正在使用创建一个从Redis列表中读取URL的爬行器。我的问题是,我想发送一个唯一的ID与每一个网址。这样我就可以再次识别数据库中的条目。
我的redis列表是这样的:
Scrapy-redis默认只从redis读取一个url,然后将其发送到爬行器。
我在内部进行了修改:
并更改了此函数:
def next_request(self):
"""Returns a request to be scheduled or none."""
url = self.server.lpop(self.redis_key)
if u
我创建了一个带有几个管道步骤的Scrapy Crawler。爬虫是一个更大的框架的一部分,它需要爬虫返回一个解析的项目列表。
在Scrapy中,我实现了一个包含几个规范化步骤的管道。由于Scrapy是更大的框架的一部分-如果我可以在通过整个管道后将项目返回到爬虫和/或框架,那就太好了。有没有办法做到这一点?
例如一些伪代码
url = 'http://somewebsite.com'
crawler = MyCrawler(url)
# each parsed website passes each pipeline step and is yielded / returned