有一个页面充满了下载,但都使用https://www.google.com/url?q=http://www.$$$/*.pdf&...。
我可以直接使用 http://www.$$$/*.pdf 下载,但有 50 多个文件。有什么办法可以避免这种情况吗?wget 可以做到吗?我试过了,但它只能下载链接,因为它在www.google.com/
任何帮助,将不胜感激。
答案1
您可以使用grep -P
来过滤掉真正的链接,然后将其作为输入文件(-i
)添加到wget
使用进程替换中:
wget -i <(grep -Po '[?&]q=\K[^&]*' links)
不过,我猜测嵌入的 URL 是经过 URL 编码的,因此需要一个步骤来取消引用:
urldecode() { [ $# -eq 0 ] && str=$(</dev/stdin) || str="$@"; : "${str//+/ }"; echo -e "${_//%/\\x}"; }
wget -i <(grep -Po '[?&]q=\K[^&]*' links | urldecode)
或者使用python
's urllib.parse.unquote
:
wget -i <(python -c '
import re
from urllib.parse import unquote
with open("links") as f:
for line in f.readlines():
url=re.search("([&?]q=)([^&]*)", line)
print(unquote(url.group(2)))
')
(当然您也可以用它python
来替换wget
零件......)