如何使用 wget 从 sci-hub 链接下载 pdf

如何使用 wget 从 sci-hub 链接下载 pdf

我其实一开始是在 stack overflow 上发的这个,但是很快就收到了反对票。所以我在这里试了一下。


http://sci-hub.cc/是一个旨在在世界各地自由分享学术论文的网站。

例如我想下载这篇论文

http://journals.aps.org/rmp/abstract/10.1103/RevModPhys.47.331

我可以直接在浏览器中输入此网址

http://journals.aps.org.sci-hub.cc/rmp/abstract/10.1103/RevModPhys.47.331

过一会儿,浏览器中会打开一个 PDF(如果你安装了 PDF 插件)或弹出一个下载窗口要求下载 PDF。在这两种情况下,真正的 PDF 链接如下所示

http://tree.sci-hub.cc/772ec2152937ec0969aa3aeff8db0b8f/leggett1975.pdf

然而,正如我测试的那样,真正的 pdf 链接每次都是随机的,我无法提前知道,直到浏览器得到它

现在我更喜欢使用 wget 下载论文。当然,直接下载即可

wget http://journals.aps.org.sci-hub.cc/rmp/abstract/10.1103/RevModPhys.47.331

不行。但我们可以使用“抓取”功能,该功能通常用于下载网站,以便抓取此链接下方的内容。http://journals.aps.org.sci-hub.cc/rmp/abstract/10.1103/RevModPhys.47.331。但我尝试了类似的递归选项--mirror,也失败了。

另一方面,我尝试了“Internet 下载管理器”中的“抓取”功能,该功能可以正确抓取真正的 pdf 链接,如下所示

在此处输入图片描述

我以为IDM的抓取功能跟wget一样,甚至wget比IDM还强大,那为什么wget --mirror抓取不到真正的pdf文件呢?该如何正确使用wget呢?

答案1

链接=http://journals.aps.org.sci-hub.cc/rmp/abstract/10.1103/RevModPhys.47.331

# 使用 grep 提取 pdf 链接
wget $link -qO - | grep -Eom1'http://[^ ]+\.pdf' | wget -qi -

# 使用内置抓取功能(请参阅手动的
wget -rHA'*.pdf'-e 机器人=关闭$link

相关内容