刮刮ASP.NET页面 - 下一步按钮单击

时间:2014-01-18 09:53:04

标签: asp.net scrapy

我正在使用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之类的情况下抓取它们?

2 个答案:

答案 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等,但在其他方面是相同的。

如果是这种情况,那么您可以绕过点击任何按钮的需要,只需使用新的页码重新加载页面。