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

Chrome扩展爬取网站遇内容未加载完成及await语法报错问题

问题1:扩展早于目标页面内容加载完成执行爬取的解决方案
  • 首先排查manifest.json内容脚本配置,确保run_at字段设置为document_idle,该配置会让浏览器在文档加载完成、空闲状态下才注入执行内容脚本,配置示例如下:
{
  "manifest_version": 3,
  "name": "你的扩展名称",
  "version": "1.0",
  "content_scripts": [
    {
      "matches": ["<目标网站匹配规则,如https://example.com/*>"],
      "js": ["content.js"],
      "run_at": "document_idle"
    }
  ]
}
  • 如果目标网站是React/Vue开发的单页应用(SPA),window.onload仅会在页面首次加载时触发一次,路由跳转后的内容更新不会重新触发该事件,此时需要监听你要爬取的目标内容DOM节点是否渲染完成,封装监听方法示例如下:
const waitForTargetNode = (selector) => {
  return new Promise((resolve) => {
    const existNode = document.querySelector(selector);
    if (existNode) return resolve(existNode);
    const observer = new MutationObserver((mutations) => {
      const targetNode = document.querySelector(selector);
      if (targetNode) {
        observer.disconnect();
        resolve(targetNode);
      }
    });
    observer.observe(document.body, { childList: true, subtree: true });
  });
}

// 调用示例:等待目标节点加载完成后再执行爬取逻辑
window.onload = async function() {
  // 替换为你要爬取内容的CSS选择器,如文章容器、列表容器的类名/ID
  await waitForTargetNode('.content-wrap');
  await finsh_minting_shit(profile, user_id_now);
}
问题2:await语法报错的解决方案

首先你的现有代码存在语法错误:finsh_minting_shit函数定义末尾多写了一个多余的右括号,需要先把末尾的});修改为}。
报错的根本原因是await关键字仅允许在async标记的函数内部,或者ES模块的顶层作用域中使用,对应两种修复方案:

  • 方案1:在window.onload回调中使用await,将回调函数标记为async即可,修改后代码:
window.onload = async function() {
  await finsh_minting_shit(profile, user_id_now);
}
  • 方案2:直接在脚本顶层调用的话,用async立即执行函数包裹调用逻辑即可:
(async () => {
  await finsh_minting_shit(profile, user_id_now);
})();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:15:05