Scrapy:下一个按钮使用WebForm_DoPostBackWithOptions()

时间:2019-04-12 19:00:03

标签: python asp.net scrapy

我正在尝试从https://seminovos.localiza.com/Paginas/resultado-busca.aspx?&yr=2014_2019&pc=25000_500000抓取一些信息

在此网页中,next_page按钮的href带有以下内容:'javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$ctl42$g_f221d036_75d3_4ee2_893d_0d7b40180245$ProximaPaginaSuperior", "", true, "", "", false, true))

我可以使用Selenium轻松地做到这一点,但是使用scrapy,如何转到下一页?

我尝试过类似的事情:

next_page = response.xpath('.//a[@class="item option next"]/@href').extract_first()

if next_page:
    self.log(next_page)
    scrapy.http.FormRequest(response.url,formdata={"eventTarget":"ctl00$ctl42$g_f221d036_75d3_4ee2_893d_0d7b40180245$ProximaPaginaSuperior","eventArgument":"","validation":"true","validationGroup":"","actionUrl":"","trackFocus":"false","clientSubmit":"true"},callback=self.parse)

在这种情况下导航到下一页的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

找出单击该请求时Web浏览器执行的请求的详细信息,并尝试根据可用数据重现该请求。

Can scrapy be used to scrape dynamic content from websites that are using AJAX?的回答应使您对解决此问题的方法有所了解。还有a pull request for the Scrapy documentation涵盖了处理此类情况,您可能会觉得有用。

答案 1 :(得分:0)

它使用ASP.NET,因此进行了更多搜索并分析了页面,发现了我想要的东西:

post

最终代码具有以下格式:

if next_page:    
    yield FormRequest.from_response(response,formdata={'__EVENTTARGET':'ctl00$ctl42$g_f221d036_75d3_4ee2_893d_0d7b40180245$ProximaPagina'},callback=self.parse,dont_click=True)

现在有效。谢谢。