我正在使用Scrapy抓取一个ASP.net页面,该页面显示一个分页的项目列表。要浏览项目,可以使用以下格式的下一个和上一个按钮:
<form name="aspnetForm" method="POST" action="search_active_main.aspx" id="aspnetForm">
<!-- other content here -->
<!-- previous button -->
<input type="image" name="ctl00$gvMain$ctl01$btnPrevious" id="ctl00_gvMain_ctl01_btnPrevious" src="/image/previous.gif" />
<!-- next button -->
<input type="image" name="ctl00$gvMain$ctl01$btnNext" id="ctl00_gvMain_ctl01_btnNext" src="/image/next.gif" />
<!-- other content here -->
</form>
当您单击其中一个按钮时,这样的内容将作为POST的一部分发送:
ctl00$gvMain$ctl01$btnNext.x:37
ctl00$gvMain$ctl01$btnNext.y:10
这些数字代表什么/如何在不使用Selenium之类的情况下抓取它们?
答案 0 :(得分:5)
正如黑曜石凤凰城建议的那样,这些数字代表了点击按钮的坐标。要抓取页面,您只需要在FormRequest中将以下内容作为formdata进行POST,以模拟下一个按钮单击:
FormRequest.from_response(
response,
formdata={
'ctl00$gvMain$ctl01$btnNext.x':'1'
'ctl00$gvMain$ctl01$btnNext.y':'1'
},
dont_click=True,
dont_filter=True,
callback=self.your_callback_function
)
答案 1 :(得分:0)
要研究的一件事是每页上显示的URL。您可能会发现后续页面在其URL中具有/ 2/3等,但在其他方面是相同的。
如果是这种情况,那么您可以绕过点击任何按钮的需要,只需使用新的页码重新加载页面。