我如何刮取作为回发进行所有交互的ASP.NET站点?

时间:2011-04-03 21:09:34

标签: javascript asp.net python screen-scraping

使用Python,我为ASP.NET站点(特别是Jenzabar课程搜索portlet)构建了一个刮板,它将创建一个新会话,加载第一个搜索页面,然后通过回发所需的字段来模拟搜索。然而,一些变化,我无法弄清楚是什么,现在我得到HTTP 500响应一切。我可以看到浏览器的POST数据中没有新字段。

我最好想弄清楚如何修复我自己的刮刀,但是如果不包含大量特定的上下文,可能很难在StackOverflow上询问,所以我想知道是否有办法将页面视为一个黑盒子,只需点击我想要的回发链接上的点击事件,然后获取结果的HTML。

我在这里看到了一些关于使用JavaScript进行抓取的答案,但他们似乎主要关注等待javascript加载然后返回页面的规范化表示。我想模拟浏览器实际点击链接并按照相同的路径执行请求。

4 个答案:

答案 0 :(得分:1)

在不知道任何具体细节的情况下,我的预感是您正在使用硬编码会话ID并且回收Web服务器的应用程序域并创建新的加密/解密密钥,使您的硬编码会话ID(由旧密钥加密)无效。

答案 1 :(得分:0)

您可以尝试使用Firebugs NET选项卡来监控所有请求,手动浏览,然后将您生成的请求与屏幕抓取工具生成的请求进行差异化。

答案 2 :(得分:0)

如果您只是想模拟负载,您可能需要检查一些像selenium这样的东西,它通过浏览器运行并像浏览器那样处理回发。

答案 3 :(得分:0)

您是否看过这篇文章,我提到在Jython中使用HtmlUnit? Click on a javascript link with python?