我其实一开始是在 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