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

use*_*964 1 download wget

起初我实际上将其发布在堆栈溢出上,但是,我立即获得了接近投票。所以我在这里试了一下。


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
Run Code Online (Sandbox Code Playgroud)

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

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

在此处输入图片说明

我以为IDM中的grab功能和wget是一样的,也许wget比IDM更强大。那为什么wget --mirror不能得到真正的pdf文件呢?在这种情况下如何正确使用 wget ?

gue*_*-vm 6

链接=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 robots=off $link