【发布时间】:2014-09-25 09:08:20
【问题描述】:
我一直在尝试抓取这个网站:http://www.e3050.com/Cases-Fans-PDU/C
除了移动到下一页,我可以正常抓取任何内容,调试后我发现他们为每个页面请求发送了 __Viewstate 参数。 viewstate 参数存储在每个页面响应中,所以我想我需要按页面获取它并将其发送到下一页。 我使用这个 xpath 获得了 __viewstate :
sel.xpath('//input[@id="__VIEWSTATE"]/@value').extract()
我也遇到了一个错误,因为他们发送的视图状态与他们的页面响应中登记的不同,这两个参数都是 64 基编码但他们每个请求发送的数据比我从页面响应中获得的数据多.
我该如何处理?以及他们如何获得 viewstate 参数?
编辑: __EVENTVALIDATION 参数也有同样的问题。
【问题讨论】:
-
视图状态是每页以支持回发。不要将视图状态发送到其他页面。
-
那我怎样才能得到下一页的viewstate呢?
-
或者他们如何首先为请求生成视图状态?
-
根据您的意思,我不必为发布请求发送视图状态,对吧?但是当我不发送视图状态或发送错误的视图状态时,我会收到此响应:
1|#||4|53|pageRedirect||%2ferror.html%3faspxerrorpath%3d%2fCases -Fans-PDU%2fC|
-
我确实使用scrapy的FormRequest来请求以下页面。 doc.scrapy.org/en/latest/topics/… 但问题是嵌入在前一页中的视图状态(我使用此 xpath "//input[@id="__VIEWSTATE"]/@value" 获得的视图状态)与表单中发送的视图状态不同发布请求我使用谷歌浏览器开发者工具检查。我的问题是如何获得这个视图状态?
标签: python asp.net .net scrapy viewstate