首页 > 解决方案 > jQuery - 获取 HTTP 请求不会在获取的源代码中执行 JavaScript

问题描述

我的目标是创建一个 Chrome 插件,它从给定的 URL 获取网页并抓取它的 HTML 内容以找到视频的下载链接。问题是获取的网页运行一些 JavaScript 以在页面上生成下载链接。但是,当我使用下面的 jQuery 代码获取页面时,我没有看到下载 URL,因为(可能)获取的页面上的 JavaScript 尚未执行。

$.get(link, function(response) {
    console.log($response);
    //console.log($(response).find(".videoData").attr("value"));
});

我在网上查了一下,知道 jQuery 的 .load() 函数在这种情况下也会失败。PhantomJS 的 page.open() 函数似乎可以满足我的要求,但我想在我的 Chrome 扩展中部署一些轻量级的解决方案,所以我无法使用 PhantomJS。

标签: javascriptjquery

解决方案


您可以在尝试抓取的网页中注入内容脚本。确保您在清单中输入“document_end”,这样您就可以确保您的脚本在目标页面完成加载后执行。

另一种解决方案是创建一个不可见iframe的,您将在其中加载目标 url,然后为video链接抓取加载的代码。


推荐阅读