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

중괄호 확장(예: bashand ksh93zsh)에서 산술 범위를 이해하는 셸을 사용하세요.

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

관련 정보