我该如何抓取这个框架?

2 投票
2 回答
2595 浏览
提问于 2025-04-15 13:47

如果你现在访问 这个链接,你可能会遇到一个VBScript错误。

但是,如果你先访问 这个链接,然后再访问上面的链接(在同一个会话中),页面就能正常显示。

这个应用的设置是,第一页面是用来作为第二个(主要)页面的框架。如果你多点几下,你会看到它是怎么运作的。

我想问的是:我该如何用Python抓取第一页面?我试过我能想到的所有方法——urllib、urllib2、mechanize——结果都是500错误或者超时。

我怀疑答案可能在mechanize上,但我对mechanize的掌握还不够,无法解决这个问题。有没有人能帮帮我?

2 个回答

1

你也可以试试 BeautifulSoup,除了Mechanize之外。虽然我不太确定,但你应该能把网页的结构解析到框架页面里。

我还发现 Tamper Data 是一个很有用的插件,特别是在我写抓取程序的时候。

8

这其实就是请求和响应的模型。你需要发送一系列的http请求,以便得到你想要的响应。在这个情况下,你还需要让服务器把每个请求都当作同一个会话的一部分。为了做到这一点,你得弄清楚服务器是怎么跟踪会话的。这可能涉及很多东西,比如cookies、隐藏输入、表单动作、POST数据或者查询字符串。如果让我猜,我会认为这里可能用的是cookie(我没有检查链接)。如果真是这样,你需要先发送第一个请求,保存你收到的cookie,然后在第二个请求中带上这个cookie。

也有可能,最开始的页面上会有一些按钮和链接,可以让你跳转到第二个页面。这些链接可能会像这样:<A href="http://cad.chp.ca.gov/iiqr.asp?Center=RDCC&LogNumber=0197D0820&t=Traffic%20Hazard&l=3358%20MYRTLE&b=">,其中很多复杂的内容都是由第一个页面生成的。

其中的"Center=RDCC&LogNumber=0197D0820&t=Traffic%20Hazard&l=3358%20MYRTLE&b="部分包含了一些会话信息,你必须从第一个页面获取这些信息。

当然,你可能还需要同时做这两件事。

撰写回答