方案:
我们需要每天将数据输入欧洲国家的政府数据库。我们突然需要检索一些数据。但他们允许的唯一格式是从数据生成的PDF - 数百个。我们希望避免在链接后坐在网页浏览器点击链接前面。
生成的链接看起来像
<a href='javascript:viajeros("174814255")'>
<img src="img/pdf.png">
</a>
我几乎没有使用Javascript的经验,所以我不知道我是否可以安装例程作为书签来循环访问DOM,查找所有链接,并调用该函数。如果可能的话,也不会如何写它。
无法预测ID号,因此我无法编写其他页面或curl / wget脚本来执行此操作。 (如果可以的话,它仍然会失败,如下所述。)
&#39; viajeros&#39;功能很简单:
function viajeros(id){
var idm = document.forms[0].idioma.value;
window.open("parteViajeros.do?lang="+idm+"&id_fichero=" + id);
}
但是将该URI提供给curl或wget会失败。显然他们检查cookie或REFERER并生成错误。
此外,由于每个链接都将PDF放在浏览器选项卡而不是下载目录中,我们仍然需要进行两次点击(制表符和保存)数百次。
我该怎么办?
对于它的价值,这是在MacOS 10.13.4上。我通常使用Safari,但我也有Opera和Firefox。我可以安装Chrome,但这是最后的选择。不,那是倒数第二:我们还有一台(颤抖)Windows 10笔记本电脑。这是最后的手段。
(注意:我查看了四个看似有希望的重复建议,但每个都没有答案或指示提问者修改生成PDF的代码。)
答案 0 :(得分:1)
document.querySelectorAll("img[src=\"img/pdf.png\"]")
.forEach((el, i) => {
let id = el.parentElement.href.split("\"")[1];
let url =
"parteViajeros.do?lang=" + document.forms[0].idioma.value +
"&id_fichero=" + id;
setTimeout(() => {
downloadURI(url, id);
}, 1500 * i)
});
这将获取PDF图标的所有图像,然后查看其父级的链接目标。此href已提取其ID,并传递给字符串构造,使得要下载文件的路径类似于“viajeros”但没有window.open
。然后将此URL传递给执行下载的downloadURI
。
这使用another Stack Overflow answer中的downloadURI
函数。您可以通过在链接上设置下载属性,然后单击它来下载URL,这是实现的。这仅在Chrome中进行了测试。
function downloadURI(uri, name) { var link = document.createElement("a"); link.download = name; link.href = uri; document.body.appendChild(link); link.click(); document.body.removeChild(link); delete link; }
打开包含链接的页面并打开控制台。首先粘贴downloadURI
函数,然后粘贴上面的代码以下载所有链接。
答案 1 :(得分:0)