【问题标题】:How to make mechanize wait for web-page 'full' load?如何让机械化等待网页“满载”?
【发布时间】:2012-02-08 15:12:07
【问题描述】:

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

问题是,当我调用br.open('URL') 时,响应是0 秒时的网页。 HTML(我想要的)和br.open('URL') 的结果在 3 到 5 秒后出现差异。

【问题讨论】:

    标签: python mechanize


    【解决方案1】:

    您遇到的问题是网页是通过 javascript 引擎在您的网络浏览器中呈现的。但是,mechanize 本身并没有执行 javascript 的能力,因此,无论您等待多长时间,您都不会仅使用 mechanize 获得缺少的 HTML。

    有关如何抓取动态生成的内容的更多信息,请查看此question

    【讨论】:

    • 那么有没有其他库可以导航具有动态渲染的网站?
    • 请查看我的回答中的链接。
    【解决方案2】:

    用mechanize处理一个包含丰富javascripts内容的网页并不容易,但是根据不同的情况有办法得到你想要的。

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

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

    • 1234563 /li>

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 2015-11-28
      • 2021-10-14
      • 2012-04-19
      相关资源
      最近更新 更多