如何使机械化等待网页'完整'加载?

时间:2012-01-12 10:07:28

标签: python mechanize

我想抓一些动态加载其组件的网页。 这个页面有一个onload脚本,在我的浏览器中输入URL后,我可以看到整个页面3-5秒。

问题是,当我呼叫br.open('URL')时,响应是0秒的网页。 HTML(我想要的)和br.open('URL')的结果之间的时间间隔为3-5秒。

2 个答案:

答案 0 :(得分:11)

您遇到的问题是网页是通过javascript引擎在您的网络浏览器中呈现的。但是,机械化无法自行执行javascript,所以无论你等多久,你都不会只使用机械化来获取你所缺少的HTML。

有关如何动态生成内容的详细信息,请查看此question

答案 1 :(得分:1)

使用机械化工作来创建具有丰富javascripts内容的网页并不容易,但是有很多方法可以根据不同情况获得您想要的内容。

  • 如果有一些json请求用于创建内容,那么您可以调用该URL并尝试解析响应以获取内容,然后尝试正确加入。

  • 如果您需要使用某些表单,可以创建一些表单字段并在mechanize中设置它们的值。或者,只需编写一个方法,对POSTGET数据进行编码(引用特殊字符等),然后使用mechanize.browser.open方法发送它们。

  • 如果页面有一些基于javascript的安全功能(比如在发布之前形成数据的某些特殊编码),那么您可以使用node.js之类的javascript应用程序服务器来处理一些javascript代码块。

但事实上,上述某些选项并不容易,在使用机械化进行此类项目之前,您必须三思而后行。