【问题标题】:how to scrape a page request using Viewstate parameter?如何使用 Viewstate 参数抓取页面请求?
【发布时间】: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


【解决方案1】:

__VIEWSTATE 是 .net 中出于安全原因使用的参数。 它基本上是您请求的页面的推荐页面的哈希值。 它通常嵌入在标签中,您只需在每次请求之前将其提取并添加到您的下一个请求中。

【讨论】:

  • 你是如何解决你的问题的@Vanddel。你没有解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多