2014-01-18 70 views
1

我正在Scrapy显示分页列表的项目的Scrapy ASP.net页面。要通过项目定位,有下面的格式下一个和上一个按钮:刮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 

这些数字代表什么/我如何在不使用硒之类的情况下抓取它们?

+1

这些数字看起来代表坐标。尝试单击按钮的最左上角,查看发送了哪些数据。考虑到两个合作伙伴的价值较低,我希望你能看到接近x:0 y:0的东西(取决于你点击的角度有多接近)。 –

+0

感谢这是正确的,在这种情况下,这些数字与如何抓取页面无关。 – jyek

回答

5

正如黑曜石凤凰所暗示的那样,这些数字代表被点击的按钮的坐标。要抓取页面,您只需在FormRequest中将以下内容以formdata形式发布,以模拟下一个按钮单击:

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 
) 
0

要调查的一件事是每个页面上存在的URL。你可能会发现后面的页面在他们的URL中有2/3等,但是在其他方面是相同的。

如果是这样的话,那么你可以绕过点击任何按钮的需要,只需用新的页码重新加载页面。

+0

当按钮被点击时url不会改变 – jyek

+0

那很不幸。我会留下答案,因为将来可能对其他人有用,但显然这不是你的答案。不幸的是,我不知道Python/Scrapy,所以不能提供太多的贡献 - 我会把它留给别人。 –

相关问题