从 Manifest V3 chrome 扩展中抓取网页的干净方法

问题描述 投票:0回答:0

我的 chrome 扩展程序抓取了各种网页。我还没有找到一种完全有效的方法。我试过的,很接近:

  1. 从后台脚本中,我可以

    fetch
    ,然后通过htmlparser2运行html来解析它(我无法获取文档,但是对于简单的提取,这是可以的)。这适用于静态站点,但不适用于使用 javascript 呈现内容的站点。

  2. 我可以创建一个带有扩展提供的 html 的选项卡,并在该选项卡中加载我试图在 iframe 中抓取的目标(在使用

    declarativeNetRequest
    删除
    X-Frame-Options
    和相关标题之后)。不幸的是,然后我遇到了同源策略,这意味着我无法访问 iframe 的内容——具体来说,
    iframe.contentDocument
    最终为空。我尝试使用
    chrome.scripting.executeScript
    将脚本注入 iframe,以为我可以发布消息并让它响应,但我没有权限在 chrome-extension:// 标签上注入脚本,即使它是我自己的标签! (这看起来很愚蠢,但也许是设计使然。)

我知道我可以为每个我想抓取的网址创建一个新标签;然而,为了做到这一点,我需要一个宽松的 contentScripts 政策(我有几十个 url),而且我真的不想将 contentScript 注入用户的常规浏览选项卡(尽管如果我发现没有其他解决方案)。此外,选项卡的显示和隐藏,或选项卡上的图标/标题变化的干扰,都是非常糟糕的用户体验。

Firefox 有隐藏标签,这很好,但 Chrome 不支持它们。

有更清洁的方法吗?

web-scraping google-chrome-extension browser-extension
© www.soinside.com 2019 - 2024. All rights reserved.