如果URL包含分页,我想发送一个Scrapy请求到URL,否则我想返回上一个请求的上一个响应。我尝试在下面的代码中实现它,但我没有得到想要的结果。
因此,例如,具有和不具有分页的URL看起来像这样。
- https://www.oddsportal.com/soccer/africa/africa-cup-of-nations/results/
- https://www.oddsportal.com/soccer/africa/africa-cup-of-nations-2021/results/
我向第二个URL发送了一个请求,因为它包含分页,而对于第一个URL,我只想返回前面的响应。
我在process_link
函数中实现了该逻辑,但我发现我只从get_content
函数中的第二个链接获得响应。
def parse_item(self, response):
yield scrapy.Request(url=response.url, callback=self.process_link,
meta ={
'splash': {
'args' : {'wait': 0.5},
'endpoint' : 'render.html',
}
},
dont_filter=True)
def process_link(self, response):
next_page = response.xpath("//*[@id='pagination']/a[last()-1]//@href").extract_first()
if next_page is not None:
print('Check if next page is paginated------------------------------------',response.url)
yield scrapy.Request(url= response.url, callback=self.get_content,meta = {
'splash': {
'args' : {'wait': 5, 'lua_source': self.script},
'endpoint' : 'execute',
} },
dont_filter=True
)
else:
return response
# # yield SplashRequest(url=response.url, callback=self.get_content, endpoint='execute', args={'wait': 1, 'lua_source': self.script,'timeout':90, 'images': 0, 'resource_timeout': 10}, dont_filter=True)
def get_content(self, response):
#Get the url for both request in parse_link function
print('000000000000000000000000000000', response.url)
1条答案
按热度按时间tzxcd3kk1#
对于第二种情况,您需要调用
get_content
: