我一直在尝试下载网站中的特定页面。该网站使用通用 URL 转到下一页,如下所示。
https://example.com/pages/?p=1
https://example.com/pages/?p=2
https://example.com/pages/?p=3最多 450。
我只想下载这些页面,而不是页面中链接的超链接(意味着不是子页面,只是父文件,例如?p1 和?p2 等)。
我尝试过使用下面的命令,但它不起作用。
wget --load-cookies=cookies.txt https://example.com/pages/\?p\=\{1..450\}
这是否意味着 {..} 在 wget 中不起作用?如果没有, wget 中是否有任何选项可以用来实现我的目标?
答案1
使用能够理解大括号扩展中算术范围的 shell(例如bash
andksh93
和zsh
):
wget --load-cookies=cookies.txt "https://example.com/pages/?p="{1..450}
这将被扩展(在wget
调用之前)为
wget --load-cookies=cookies.txt "https://example.com/pages/?p="1 "https://example.com/pages/?p="2 "https://example.com/pages/?p="3 ... "https://example.com/pages/?p="450
和curl
:
curl --cookie-jar cookies.txt "https://example.com/pages/?p="{1..450}
使用以下命令将输出保存到单独的文件中curl
:
curl --cookie-jar cookies.txt -Ooutfile{1..450}.html "https://example.com/pages/?p="{1..450}
答案2
while 循环为我工作。
#!/bin/sh
a=1
while [ $a -lt 450 ]
do
wget --load-cookies=cookies.txt https://example.com/pages/\?p\=$a
a=`expr $a + 1`
done
答案3
您是否尝试过从“递归下载 1 深度”https://example.com/pages“?
选项“-l 1”应将递归深度设置为 1。
来源: https://www.gnu.org/software/wget/manual/wget.html#Recursive-Download