wget을 사용하여 크롤링하여 HTML 파일 만 다운로드하는 방법 (이미지, CSS, JS는 무시)


14

기본적으로 Wget으로 전체 사이트를 크롤링하고 싶지만 다른 자산 (예 : 이미지, CSS, JS 등)을 다운로드하지 않아야합니다. HTML 파일 만 원합니다.

Google 검색 은 완전히 쓸모가 없습니다.

내가 시도한 명령은 다음과 같습니다.

wget --limit-rate=200k --no-clobber --convert-links --random-wait -r -E -e robots=off -U "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36" -A html --domain=www.example.com http://www.example.com

우리 사이트는 하이브리드 flat-PHP 및 CMS입니다. 그래서, HTML "파일은"수 /path/to/page, /path/to/page/, /path/to/page.php, 또는 /path/to/page.html.

심지어 포함 -R js,css시켰지만 여전히 파일을 다운로드하고 거부합니다 (무의미한 대역폭 낭비, CPU 및 서버로드!).


2
지금까지 시도한 명령은 무엇입니까? 파일 이름이 일관되면 -R 플래그를 사용할 수 있어야합니다. 또는 --ignore-tags 플래그를 사용하고 script 및 img 태그를 무시할 수 있습니다.
ernie


--accept = html을 사용해 보았지만 CSS 파일을 다운로드 한 다음 삭제합니다. 다운로드가되지 않도록하고 싶습니다. 헤더 요청은 괜찮습니다. 예를 들어 Length: 558 [text/css]원하지 않는 파일에 주목 합니다. 헤더 text/html가을 반환하지 않으면 요청을 중지 할 수 있다면 기뻐할 것입니다.
Nathan JB

답변:


13

@ernie의 의견은 --ignore-tags올바른 길로 인도합니다! 나는 고개를하는 경우 --ignore-tagsman, 나는났습니다 --follow-tags.

설정은 --follow-tags=a나를 건너 뛸 수 img, link, script, 등

아마도 같은 대답을 찾는 일부 사람들에게는 너무 제한적이지만 실제로 내 경우에는 잘 작동합니다 (몇 페이지를 놓치면 괜찮습니다).

누구나 모든 태그를 검색 할 수있는 방법을 찾지 wget만 파일을 다운로드 한 후에 만 ​​파일을 거부 하지 못하게 하는 경우 (다운로드 전에 파일 이름 또는 헤더 콘텐츠 유형에 따라 거부해야 함), 나는 그들의 답변을 매우 기쁘게 받아 들일 것입니다!


5

옵션을 추가하는 방법은 무엇입니까?

--reject '*.js,*.css,*.ico,*.txt,*.gif,*.jpg,*.jpeg,*.png,*.mp3,*.pdf,*.tgz,*.flv,*.avi,*.mpeg,*.iso'
--ignore-tags=img,link,script 
--header="Accept: text/html"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.