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

pla*_*853 10 python mechanize

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

问题是,当我打电话时br.open('URL'),响应是0秒的网页.HTML(我想要的)和结果之间有3-5秒的差异br.open('URL').

jco*_*ado 12

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

有关如何动态生成内容的更多信息,请查看此问题.


Fal*_*gel 1

使用 mechanize 处理具有丰富 javascript 内容的网页并不容易,但是根据不同的情况,有一些方法可以得到你想要的东西。

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

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

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

但事实上,上述一些选项并不容易做到,在使用 mechanize 进行此类项目之前必须三思而后行。