wget 仅使用 {..} 的父页面

wget 仅使用 {..} 的父页面

我一直在尝试下载网站中的特定页面。该网站使用通用 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(例如bashandksh93zsh):

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

相关内容