Scrapy 每一个卑鄙的请求都经过中间商吗?
我的蜘蛛身上有这样的东西:Scrapy 每一个卑鄙的请求都经过中间商吗?,scrapy,Scrapy,我的蜘蛛身上有这样的东西: def some_parse(self,response): # ... other code here for link in extracted_links: log.info(link) yield scrapy.Request(link, callback=self.some_parse, method="GET") 在我的定制下载中间件中,我有如下内容: def process_request(self, r
def some_parse(self,response):
# ... other code here
for link in extracted_links:
log.info(link)
yield scrapy.Request(link, callback=self.some_parse, method="GET")
在我的定制下载中间件中,我有如下内容:
def process_request(self, request, spider):
#do something
log.info(request.url)
request.headers.setdefault('User-Agent', "some randomly selected useragent")
我从一些_解析中获得数千个日志,而从process_请求中仅获得几百个日志。为什么会这样?不是每个页面请求都通过中间件吗?2个问题
部分解析中显示出来的原因
我很确定您的URL被过滤是因为重复。我想我已经解决了这个问题。我有:
def some_parse(self,response): #1
# ... other code here
for link in extracted_links: #2
log.info(link) #3
yield scrapy.Request(link, callback=self.some_parse, method="GET") #4
如果深度限制为N,并且响应属于属于第N个深度的URL,那么它产生的所有链接都不会通过中间件,因为它已经被记录。因此存在差异
正确的日志记录方式是:
def some_parse(self,response):
# ... other code here
log.info(response.url)
for link in extracted_links:
yield scrapy.Request(link, callback=self.some_parse, method="GET")
是的,我让它们全部完成了。@Ayushkarki然后似乎不可能有一些URL没有通过那个中间件