웹사이트에서 특정 페이지를 다운로드하려고 했습니다. 웹사이트는 아래와 같이 범용 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
중괄호 확장(예: bash
and ksh93
및 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