如何抓取一个进行所有交互的ASP.NET网站?

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

我用Python写了一个爬虫,专门用来抓取一个ASP.NET网站(具体来说是Jenzabar的课程搜索模块)。这个爬虫会创建一个新的会话,加载第一个搜索页面,然后通过发送必要的字段来模拟搜索。不过,最近发生了一些变化,我搞不清楚是什么原因,现在每次请求都会得到HTTP 500的错误响应。我在浏览器的POST数据中没有看到任何新的字段。

我希望能找到解决我这个爬虫问题的方法,但在StackOverflow上提问可能会很难,因为需要提供很多具体的背景信息。所以我在想,是否有办法把这个页面当作一个黑箱,只对我想要的回发链接触发点击事件,然后获取结果的HTML。

我看到这里有一些关于用JavaScript抓取的回答,但大多数都集中在等待JavaScript加载完成,然后返回页面的标准化表示。我想要的是模拟浏览器实际点击链接,并按照相同的路径执行请求。

3 个回答

0

你可以试着使用Firebug的NET标签来监控所有的请求。手动浏览一下网页,然后对比一下你自己生成的请求和你的屏幕抓取工具生成的请求。

0

如果你只是想模拟负载,可以看看像selenium这样的工具。它通过浏览器运行,能像浏览器一样处理页面的回传。

2

我猜测你可能在使用一个固定的会话ID,而你的网页服务器的应用域名发生了变化,导致新的加密和解密密钥被创建。这就意味着你之前用旧密钥加密的那个固定会话ID现在变得没用了。

撰写回答