我怎么刮这个框架?

时间:2009-08-21 20:28:36

标签: python vbscript screen-scraping mechanize

如果您现在访问this link,可能会收到VBScript错误。

另一方面,如果您访问this link first然后上述链接(在同一会话中),则会显示该页面。

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

我的问题:如何用Python抓第一页?我已经尝试了我能想到的一切 - urllib,urllib2,mechanize - 而我得到的只是500个错误或超时。

我怀疑答案在于机械化,但我的机械化能力不足以破解这一点。有人可以帮忙吗?

2 个答案:

答案 0 :(得分: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="部分对您必须从第一页获得的一些会话信息进行编码。

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

答案 1 :(得分:1)

除了Mechanize之外,您还可以尝试BeautifulSoup。我不是肯定的,但你应该能够将DOM解析为框架页面。

当我写刮刀时,我也发现Tamper Data是一个非常有用的插件。