Есть страница, полная загрузок, но все они используют https: //www.google.com/url? Q = http: // www. $$$ / *. Pdf & ... .
Я могу скачать напрямую http: //www.$$$/*.pdf, но есть более 50 файлов. Как бы то ни было, чтобы этого избежать? Wget может это сделать? Я пробовал, но он загружает только ссылки, поскольку они находятся на www.google.com/
. Любая помощь будет принята с благодарностью.
Вы можете использовать grep -P
для фильтрации реальных ссылок и либо добавить в качестве входного файла ( -i
) в wget
, используя подстановку процесса:
wget -i <(grep -Po '[?&]q=\K[^&]*' links)
Тем не менее, я предполагаю, что встроенный URL-адрес закодирован, тогда вам понадобится шаг для отмены цитирования:
urldecode() { [ $# -eq 0 ] && str=$(</dev/stdin) || str="$@"; : "${str//+/ }"; echo -e "${_//%/\\x}"; }
wget -i <(grep -Po '[?&]q=\K[^&]*' links | urldecode)
или python
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
также ...)