2

如果您现在访问此链接,您可能会收到 VBScript 错误。

另一方面,如果您先访问此链接然后访问上述链接(在同一会话中),则该页面会通过。

此应用程序的设置方式是,第一页用作第二(主)页中的框架。如果你点击一下,你会看到它是如何工作的。

我的问题:如何用 Python 抓取第一页?我已经尝试了所有我能想到的东西——urllib、urllib2、mechanize——我得到的只是500个错误或超时。

我怀疑答案在于机械化,但我的机械化功能不足以破解这个问题。任何人都可以帮忙吗?

4

2 回答 2

8

它总是归结为请求/响应模型。您只需制作一系列 http 请求,以便获得所需的响应。在这种情况下,您还需要服务器将每个请求视为同一会话的一部分。为此,您需要弄清楚服务器如何跟踪会话。它可能是很多东西,从 cookie 到隐藏输入,再到表单操作、发布数据或查询字符串。如果我不得不猜测,在这种情况下我会把钱放在饼干上(我没有检查链接)。如果这成立,您需要发送第一个请求,保存您返回的 cookie,然后将该 cookie 与第二个请求一起发送。

也可能是初始页面将包含可将您带到第二页的按钮和链接。这些链接将类似于<A href="http://cad.chp.ca.gov/iiqr.asp?Center=RDCC&LogNumber=0197D0820&t=Traffic%20Hazard&l=3358%20MYRTLE&b=">第一页生成大量 gobbedlygook 的地方。

"Center=RDCC&LogNumber=0197D0820&t=Traffic%20Hazard&l=3358%20MYRTLE&b="部分对您必须从第一页获取的一些会话信息进行编码。

而且,当然,您甚至可能需要两者都做。

于 2009-08-21T20:46:55.383 回答
1

除了 Mechanize,您还可以尝试BeautifulSoup 。我不肯定,但您应该能够将 DOM 解析到框架页面中。

当我编写爬虫时,我还发现Tamper Data是一个相当有用的插件。

于 2009-08-21T20:38:27.337 回答