我想从Google Chrome扩展程序中完全保存wabpage。
我添加了"downloads", "<all_urls>"
权限,并确认以下代码将Google页面保存为google.html
。
chrome.downloads.download(
{ url: "http://www.google.com",
filename: "google.html" },
function (x) { console.log(x); })
但是,此代码仅保存html文件。
样式表,脚本和图像不会保存。
我想完全保存网页,就像我使用对话框保存页面一样,选择Format: Webpage, Complete
。
我调查了document但我无法找到方法。
所以我的问题是:如何使用Google Chrome浏览器api完全从扩展程序下载网页?
答案 0 :(得分:8)
downloads
API仅下载单个资源。如果您想保存完整的网页,则可以先打开网页,然后使用chrome.pageCapture.saveAsMHTML
将其导出为MHTML,使用{为导出的blob:
创建Blob
- 网址{1}}最后使用chrome.downloads.download
API保存此网址。
pageCapture API需要有效的tabId。例如:
URL.createObjectURL
要试用,请将之前的代码放入// Create new tab, wait until it is loaded and save the page
chrome.tabs.create({
url: 'http://example.com'
}, function(tab) {
chrome.tabs.onUpdated.addListener(function func(tabId, changeInfo) {
if (tabId == tab.id && changeInfo.status == 'complete') {
chrome.tabs.onUpdated.removeListener(func);
savePage(tabId);
}
});
});
function savePage(tabId) {
chrome.pageCapture.saveAsMHTML({
tabId: tabId
}, function(blob) {
var url = URL.createObjectURL(blob);
// Optional: chrome.tabs.remove(tabId); // to close the tab
chrome.downloads.download({
url: url,
filename: 'whatever.mhtml'
});
});
}
,
将权限添加到background.js
(如下所示)并重新加载扩展名。然后将打开example.com,网页将保存为独立的MHTML文件。
manifest.json
答案 1 :(得分:-1)
不,它不会为你下载所有文件:images,js,css等。 您应该使用HTTRACK等工具。