使用Python提交查询并抓取aspx页面的结果?

1 投票
3 回答
2574 浏览
提问于 2025-04-15 18:00

我正在尝试获取一批查询的结果,目标是这个人口统计工具页面:http://adlab.microsoft.com/Demographics-Prediction/DPUI.aspx

这个页面的表单通过POST方式提交,实际上是调用了同一个页面(_self),可能是在发送一些事件数据。我在StackOverflow的另一篇帖子上看到,aspx页面通常需要一些视图状态和验证数据。我是不是只需要从一次请求中保存这些数据,然后在POST请求中重新发送?

还是说有更简单的方法呢?其中一个aspx的视图状态参数大约有1000个字符,看到这些字符要粘贴到我的代码里,感觉实在太麻烦了,肯定有更好的办法。任何我可以阅读的相关资料都会很有帮助,谢谢!

3 个回答

0

我用过一种组合,分别是requestsBeautifulSoup4,来完成类似的工作。

1

使用 urllib2。你的POST数据其实就是一个简单的Python字典,修改和维护起来非常简单。

如果你的表单里有一些隐藏字段,其中有些是经过编码的,那么你需要先进行一次GET请求来获取这个表单和各种隐藏字段的初始值。

一旦你获取了表单,就可以把需要的输入值和那些隐藏的值加在一起,然后再进行一次POST请求,把结果发送回去。

另外,你还需要确保处理好任何的cookies,urllib2也会帮你处理这个。

毕竟,浏览器就是这么工作的,它在浏览器里运行。浏览器并不知道ASPX、CGI和WSGI之间的区别,所以因为是ASPX也没有什么特别的地方。有时候你需要先进行GET请求,再进行POST请求,以便正确设置值和cookies。

1

也许 mechanize 这个工具会对你有帮助。

撰写回答