我在 Linux Debian 10 上使用 Google Chrome。我通过它下载了很多文件(数千个)。我应该导出我下载文件的链接。我在互联网上寻找方法并找到了一些 JS 脚本,我应该粘贴到 chrome://downloads/ 页面上的控制台,例如:
ditems = document.querySelector("downloads-manager").shadowRoot.querySelector("iron-list").querySelectorAll("downloads-item");
var div = document.createElement('div');
[].forEach.call(ditems, function (el) {
var br = document.createElement('br');
var hr = document.createElement('hr');
div.appendChild(el.shadowRoot.querySelector("#url"));
div.appendChild(br);
div.appendChild(hr);
});
document.body.innerHTML=""
document.body.appendChild(div);
document.head.style.innerHTML="";
但是这段代码中的每一个都只覆盖了我下载列表的一小部分。首先,我决定这是因为我的大列表没有加载满,所以我花了时间向下滚动直到最后并再次尝试,但没有任何改变。我应该怎么办? 截图:1,之前; 2,之前; 1,之后; 2,之后。我想说的是,它只显示了大列表中随机的一小部分。
正如 @joy-jin 在他的评论中提到的,你可以从 Chrome 的历史数据库中提取它。
History
文件:
~/Library/Application\ Support/Google/Chrome/Default/
%LocalAppData%\Google\Chrome\User Data\Default
~/.config/google-chrome/Default
History
复制到另一个位置(Chrome 打开时无法使用原始文件)。downloads_url_chains
。包含一些有用的 sqlite3 命令的类似问题:https://superuser.com/questions/602252/can-chrome-browser-history-be-exported-to-an-html-file
我在下载管理器选项卡的控制台中使用此代码片段:
document.querySelector("body > downloads-manager")
.shadowRoot.querySelectorAll("downloads-item")
.forEach(e => setTimeout (console.log.bind (console, e.shadowRoot.querySelector("#url").href)))
此
setTimeout (console.log.bind(console, …))
调用可防止控制台中的行号,并使复制和粘贴列表变得更容易。