주문하다
$ wget -r http://www.comp.brad.ac.uk/research/GIP/tutorials/index.html
같은 디렉토리에 다른 페이지에 대한 링크가 있더라도 저에게는 다운로드만 가능합니다 index.html
. robots.txt
예를 들어
<A HREF="viewp.html">Viewpoint specification</A>
왜 wget
이것을 무시합니까?
답변1
나는 이것을 테스트하고 문제를 발견했습니다.
wget은 명시적으로 지시하지 않는 한 robots.txt를 존중합니다.
wget -r http://www.comp.brad.ac.uk/research/GIP/tutorials/index.html
--2015-12-31 12:29:52-- http://www.comp.brad.ac.uk/research/GIP/tutorials/index.html
Resolving www.comp.brad.ac.uk (www.comp.brad.ac.uk)... 143.53.133.30
Connecting to www.comp.brad.ac.uk (www.comp.brad.ac.uk)|143.53.133.30|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 878 [text/html]
Saving to: ‘www.comp.brad.ac.uk/research/GIP/tutorials/index.html’
www.comp.brad.ac.uk/research/GI 100%[======================================================>] 878 --.-KB/s in 0s
2015-12-31 12:29:53 (31.9 MB/s) - ‘www.comp.brad.ac.uk/research/GIP/tutorials/index.html’ saved [878/878]
Loading robots.txt; please ignore errors.
--2015-12-31 12:29:53-- http://www.comp.brad.ac.uk/robots.txt
Reusing existing connection to www.comp.brad.ac.uk:80.
HTTP request sent, awaiting response... 200 OK
Length: 26 [text/plain]
Saving to: ‘www.comp.brad.ac.uk/robots.txt’
www.comp.brad.ac.uk/robots.txt 100%[======================================================>] 26 --.-KB/s in 0s
2015-12-31 12:29:53 (1.02 MB/s) - ‘www.comp.brad.ac.uk/robots.txt’ saved [26/26]
FINISHED --2015-12-31 12:29:53--
보시다시피 wget은 요청한 작업을 완벽하게 수행합니다.
이 경우 robots.txt는 무엇을 말합니까?
cat robots.txt
User-agent: *
Disallow: /
따라서 이 사이트는 로봇이 콘텐츠를 다운로드하는 것을 원하지 않습니다. 적어도 robots.txt를 읽고 팔로우하는 로봇은 그렇지 않습니다. 이는 일반적으로 로봇이 검색 엔진에서 색인화되는 것을 원하지 않는다는 의미입니다.
wget -r -erobots=off http://www.comp.brad.ac.uk/research/GIP/tutorials/index.html
이제 wget이 너무 강력해서 배울 수 없다면 괜찮습니다. 하지만 결함이 wget에 있다고 생각하는 실수를 저지르지 마십시오.
그러나 웹사이트를 재귀적으로 다운로드하는 것은 위험하므로 때로는 전체 웹사이트를 크롤링하지 않도록 제한을 사용하는 것이 더 좋습니다.
wget -r -erobots=off -l2 -np http://www.comp.brad.ac.uk/research/GIP/tutorials/index.html
-l2
최대 2레벨까지 나타냅니다.-l
의미: 수준.-np
즉, 트리 위로 이동하지 말고 시작 페이지에서 들어갑니다.-np
의미: 부모가 없습니다.
이는 대상 페이지에 따라 다르며, 때로는 얻고 싶은 것과 얻지 않으려는 것을 정확히 지정하고 싶을 때도 있습니다. 예를 들어 이 경우 그래픽, PDF, 음악/비디오 확장자가 아닌 기본 .html/.htm 확장자만 얻을 수 있습니다. 이 -A
옵션을 사용하면 크롤링할 확장 유형을 추가할 수 있습니다.
그런데 확인해 보니 내 wget 버전은 2015년 버전인 1.17입니다. 어떤 버전을 사용하고 있는지 확실하지 않습니다. 그런데, 제 생각엔 Python도 90년대에 만들어진 것 같은데, 여러분의 추론에 따르면 Python도 90년대 쓰레기입니다.
wget 매뉴얼 페이지처럼 매우 유익하고 기능이 풍부하다는 점을 인정합니다 wget --help
. 따라서 누군가가 이를 읽고 싶어하지 않는 이유는 이해할 수 있지만, 가장 일반적인 wget 작업을 수행하는 방법을 알려주는 온라인 튜토리얼이 많이 있습니다.
답변2
위와 같은 답변이지만 불필요한 잘난척은 없습니다.
wget
웹사이트의 robots.txt를 존중하세요. robots.txt가 이를 허용하지 않으면 재귀가 진행되지 않을 수 있습니다. 이 동작을 비활성화하려면 플래그를 추가하세요 -erobots=off
.