带有 Splash 的 CrawlSpider 在第一次 URL 后卡住
CrawlSpider with Splash getting stuck after first URL
我正在写一个 scrapy 蜘蛛,我需要在其中呈现一些带有飞溅的响应。我的蜘蛛基于 CrawlSpider。我需要呈现我的 start_url 响应来喂养我的爬行蜘蛛。不幸的是,我的爬行蜘蛛在呈现第一个响应后停止了。知道出了什么问题吗?
class VideoSpider(CrawlSpider):
start_urls = ['https://juke.com/de/de/search?q=1+Mord+f%C3%BCr+2']
rules = (
Rule(LinkExtractor(allow=()), callback='parse_items',process_request = "use_splash",),
)
def use_splash(self, request):
request.meta['splash'] = {
'endpoint':'render.html',
'args':{
'wait':0.5,
}
}
return request
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url, self.parse, meta={
'splash': {
'endpoint': 'render.html',
'args': {'wait': 0.5}
}
})
def parse_items(self, response):
data = response.body
print(data)
使用 SplashRequest 而不是 scrapy.Request...查看我的回答
CrawlSpider with Splash
def use_splash(self, request):
request.meta['splash'] = {
'endpoint':'render.html',
'args':{
'wait':0.5,
}
}
return request
你应该修改为
def use_splash(self, request):
return SplashRequest(xxxxxx)
或者你可以重写这个函数
def _build_request(self, rule, link):
r = Request(url=link.url, callback=self._response_downloaded)
r.meta.update(rule=rule, link_text=link.text)
return r
我不能保证它会work.I也在看这个。
我正在写一个 scrapy 蜘蛛,我需要在其中呈现一些带有飞溅的响应。我的蜘蛛基于 CrawlSpider。我需要呈现我的 start_url 响应来喂养我的爬行蜘蛛。不幸的是,我的爬行蜘蛛在呈现第一个响应后停止了。知道出了什么问题吗?
class VideoSpider(CrawlSpider):
start_urls = ['https://juke.com/de/de/search?q=1+Mord+f%C3%BCr+2']
rules = (
Rule(LinkExtractor(allow=()), callback='parse_items',process_request = "use_splash",),
)
def use_splash(self, request):
request.meta['splash'] = {
'endpoint':'render.html',
'args':{
'wait':0.5,
}
}
return request
def start_requests(self):
for url in self.start_urls:
yield scrapy.Request(url, self.parse, meta={
'splash': {
'endpoint': 'render.html',
'args': {'wait': 0.5}
}
})
def parse_items(self, response):
data = response.body
print(data)
使用 SplashRequest 而不是 scrapy.Request...查看我的回答 CrawlSpider with Splash
def use_splash(self, request):
request.meta['splash'] = {
'endpoint':'render.html',
'args':{
'wait':0.5,
}
}
return request
你应该修改为
def use_splash(self, request):
return SplashRequest(xxxxxx)
或者你可以重写这个函数
def _build_request(self, rule, link):
r = Request(url=link.url, callback=self._response_downloaded)
r.meta.update(rule=rule, link_text=link.text)
return r
我不能保证它会work.I也在看这个。