javascript - 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。
解决方案
您可以在尝试抓取的网页中注入内容脚本。确保您在清单中输入“document_end”,这样您就可以确保您的脚本在目标页面完成加载后执行。
另一种解决方案是创建一个不可见iframe
的,您将在其中加载目标 url,然后为video
链接抓取加载的代码。
推荐阅读
- html - 网页背景图片
- django - 在 Django 中调试 GraphQL / 石墨烯数据库查询
- python - 函数接受名为员工的字典(见下文),返回 3 个列表
- python - 无法在 Windows 中安装 pycurl
- python - Pandas DataFrame.loc
- jquery - 使用 JQuery Raty on Rails 获取评分值
- android - Flutter:如何使用 ThemeData 设置“启用”TextField suffixIcon 颜色
- c# - 如何处理 EF Core 数据库迁移失败?
- python - 为什么我不能用 Python 3 获得这个 json 值?
- python - Python从文件夹的每个.txt文件中读取第5行