【问题标题】:pyppeteer wait until all elements of page is loadedpyppeteer 等到页面的所有元素都加载完毕
【发布时间】:2020-07-11 17:57:08
【问题描述】:

我正在使用 pyppeteer 来触发 headless chrome 并执行一些操作。但首先我希望网页的所有元素都能完全加载。 pyppeteer 的官方文档建议使用 waitUntil 参数,该参数带有多个参数。

我怀疑我是否必须传递所有参数或任何一个参数就足够了?请建议以下 sn-p 对我的情况是否有帮助?

await page.goto(url, {'waitUntil' : ['load', 'domcontentloaded', 'networkidle0', 'networkidle2']})

【问题讨论】:

    标签: puppeteer google-chrome-headless pyppeteer


    【解决方案1】:

    不,您不必将所有可能的选项传递给'waitUntil'。如果您愿意,您可以选择其中任何一个,或同时选择更多选项,但如果您是:

    • 不处理单页应用,
    • 对所有网络连接不感兴趣(例如第 3 方跟踪)

    那么您可以使用:'domcontentloaded' 等待页面上呈现所有元素。

    await page.goto(url, {'waitUntil' : 'domcontentloaded'})
    

    详细选项:

    • load:当load 事件被触发时。

    • domcontentloaded:当DOMContentLoaded 事件被触发时。

    • networkidle0: 当网络连接数不超过0时 至少 500 毫秒。

    • networkidle2: 当网络连接数不超过 2 个时 至少 500 毫秒。

    [source]

    注意: NodeJs puppeteer 库当然也是如此,就waitUntil 而言,它们的工作方式相同。

    【讨论】:

    • 单页应用是什么意思?我正在加载的网页无论如何都是一个页面
    • 我的意思是它是例如完全用 React.Js 或 Angular 编写,只有在将所有 js 包下载到客户端 en.wikipedia.org/wiki/Single-page_application 后才能运行。如果是这种情况,您将需要使用 networkidle0 选项来确保您的页面功能齐全,DOMContentLoaded 事件可能会在此发生之前触发。
    猜你喜欢
    • 2018-05-29
    • 2019-02-24
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2012-03-21
    • 2011-09-15
    相关资源
    最近更新 更多