You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Google Workspace应用市场动态页面获取所有扩展链接?

问题解决:抓取Google Workspace市场扩展链接

这些扩展链接不是仅在鼠标悬停时生成,而是页面采用了动态懒加载机制——内容会随着页面滚动逐步渲染,或者需要等待前端JS完成初始化后才会生成完整的DOM结构。你之前的代码只做了页面跳转就直接打印内容,此时很多元素还没加载完成,自然抓不到链接。

下面是调整后的Playwright代码,解决这个问题:

from playwright.sync_api import Playwright, sync_playwright

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=True)
    context = browser.new_context()
    page = context.new_page()

    # 跳转到目标页面,等待网络空闲(确保基本内容加载完成)
    page.goto("https://workspace.google.com/marketplace/search/word", wait_until="networkidle")

    # 模拟滚动到底部,触发懒加载(循环滚动直到没有新内容加载)
    last_height = page.evaluate("document.body.scrollHeight")
    while True:
        page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
        # 等待2秒让新内容加载
        page.wait_for_timeout(2000)
        new_height = page.evaluate("document.body.scrollHeight")
        if new_height == last_height:
            break
        last_height = new_height

    # 定位所有扩展卡片的链接元素(根据页面实际DOM结构调整选择器)
    extension_links = page.query_selector_all('a[href*="/marketplace/app/"]')
    # 提取链接并打印
    for link in extension_links:
        href = link.get_attribute("href")
        print(href)

    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

关键调整说明:

  • 加入wait_until="networkidle":等待页面网络请求基本结束,确保初始内容渲染完成。
  • 模拟滚动加载:Google Workspace市场的搜索结果是滚动加载的,必须滚动到底部触发所有内容加载。
  • 直接定位链接元素:通过精准的CSS选择器抓取扩展链接,比打印整个page.content()更可靠,避免DOM未完全渲染的问题。

如果还是有部分链接抓不到,可以尝试:

  • 延长滚动后的等待时间,或者改用wait_for_selector等待特定元素出现。
  • 检查页面的DOM结构,确认链接元素的选择器是否正确(可以用浏览器开发者工具查看)。

内容的提问来源于stack exchange,提问作者Mystic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:25:19