간단한 페이지 사본을 영구 보관을 위해 HD로 다운로드하고 싶었습니다. 나는 깊은 재귀를 얻지 않고 단일 페이지 만 찾고 있으며 해당 페이지에 의해로드 된 모든 리소스도 다운로드받을 수 있습니다.
배고 있다:
- index.html
- 로드 된 이미지
- 로드 된 JS 파일
- 로드 된 CSS 파일
- CSS 파일에로드 된 모든 이미지
- 다운로드 된 사본과 함께 작동하도록 현지화 된 페이지 자원에 대한 링크 (웹 종속성 없음)
최고의 wget 구문이나 다른 도구를 찾는 데 도움이되는지 알고 싶습니다. 내가 시도한 도구는 일반적으로 CSS로 이미지를로드하지 못하므로 로컬로로드 할 때 페이지가 제대로 보이지 않습니다. 감사합니다!
탄젠트 솔루션
FireFox를 사용 하여이 작업을 수행하는 방법을 찾았습니다. 기본 저장이 깨졌으며 “저장 완료”라는 추가 기능이있어이 작업을 잘 수행 할 수 있습니다. 그러나 현재 FireFox 버전에서는 지원되지 않으므로 다운로드 할 수 없습니다. 그 이유는 “Mozilla Archive Format”이라는 부가 기능으로 롤업 되었기 때문입니다. 파일> “페이지를 다른 이름으로 저장”을 사용하면 “웹 페이지 완료”라는 새로운 옵션이 있습니다.이 옵션은 기본적으로 이전 애드온으로 FireFox에서 사용하는 스톡 구현을 수정합니다 (끔찍합니다). 이것은 WGET 솔루션은 아니지만 실행 가능한 솔루션을 제공합니다.
편집 : 미래 에이 질문을 수행 할 사람 에게이 또 다른 우스운 문제는 이것을하려고합니다. 애드온이 제대로 작동하게하려면 도구> Mozilla 아카이브 형식으로 이동하여 “끔찍한”기본 설정 인 “신뢰할 수있는 페이지 스냅 샷 작성”을 “저장 완료를 사용하여 스크립트 및 소스 보존”으로 변경하십시오. 그렇지 않으면 애드온이 모두 비워집니다 스크립트 파일을 “/ * 스크립트를 스냅 샷 저장으로 제거 * /”텍스트로 바꿉니다.
답변
wget -p -k http://ExampleSite.com
-p는 사이트를 올바르게 보는 데 필요한 모든 요소 (css, 이미지 등)를 제공합니다. -k는 모든 링크 (CSS 및 이미지에 대한 링크 포함)를 변경하여 온라인으로 표시된 페이지를 오프라인으로 볼 수 있도록합니다.
업데이트 :
이것은 귀하의 예제 사이트에만 해당됩니다 : tumblr.com
wget -H -N -k -p --exclude-domains quantserve.com --no-check-certificate -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0a2) Gecko/20110613 Firefox/6.0a2" https://www.tumblr.com
고장 :
-H = wget이 외부 호스트로 확장되도록 허용합니다. tumblr의 첫 페이지에 동일한 주소의 이미지가 없으므로 secure.assets.tumblr.com을 사용 하고 있습니다. 도메인 제외에 대한 참고 사항을 참조하십시오.
-N = 시간이 지남에 따라 동일한 페이지를 다시 다운로드하는 경우 현재 가지고있는 파일보다 최신 파일 만 가져옵니다.
-k = 링크를 오프라인으로 올바르게 보려면 변환
-p = 필수 요소 (css, 이미지 등)를 올바르게 보려면
–exclude-domains = tumblr.com 홈페이지에는 quantserve.com에 대한 링크가 있으며이 항목을 원하지 않는 것 같아서 wget 다운로드에서 제외해야합니다. 노트 : 이것은 사이트로 이동하고 외부 호스트 (광고주 및 분석 자료 생각)에 대한 여러 개의 링크가있는 경우 -H와 함께 사용해야하는 매우 중요한 것입니다.
tumblr가 https를 사용하므로 –no-check-certcertate가 필요합니다
-U는 사용자 에이전트를 변경합니다. 이 인스턴스에서는 기본 wget user-agent를 허용하므로 실제로 필요하지는 않지만 일부 사이트에서 차단할 것입니다. 다른 사이트에서 문제가 발생하는 경우를 대비하여 여기에 던졌습니다. 내가 제공 한 스 니펫 예제에서는 Mozilla Firefox 6.02a로 표시됩니다.
마지막으로 사이트가 있습니다 : https://www.tumblr.com
답변
언급 한 특정 사이트와 많은 다른 사이트는 wget (및 curl)처럼 작동하지 않습니다. 문제는 브라우저에서 페이지를 렌더링하는 데 필요한 자산 링크 중 일부가 자바 스크립트를 통해 생성된다는 것입니다. Wget에는 javascript를 실행하기 위해 보류중인 기능 요청이 있습니다.
http://wget.addictivecode.org/FeatureSpecifications/JavaScript
그러나 자바 스크립트를 사용하여 자산 링크를 빌드하는 완전한 사이트가 wget을 사용하여 복제 할 수 없습니다. 가장 쉬운 해결책은 실제로 DOM을 빌드하고 브라우저 엔진과 같은 자바 스크립트를 구문 분석하는 도구를 찾는 것입니다 (예 : 파이어 폭스 방법).
답변
wget을 사용하여 쉘을 통해 명령을 실행하여 자동으로 (또는 코딩하는 경우 프로그래밍 방식으로)이를 수행 할 수도 있습니다.
wget --convert-links -r http://www.yourdomain.com
페이지와 내부 파일을 다운로드하고 링크를 로컬로 만듭니다.
답변
wget -r http://www.example.com
나는 그것이 모든 것을 잡을 것이라고 생각하지만, 그것을 쏴서 알아 내십시오.
답변
$ ( 남자 wget ) :
-피
–page-requisites
이 옵션을 사용하면 Wget이 지정된 HTML 페이지를 올바르게 표시하는 데 필요한 모든 파일을 다운로드합니다. 여기에는 인라인 이미지, 사운드 및 참조 스타일 시트와 같은 것들이 포함됩니다.
일반적으로 단일 HTML 페이지를 다운로드 할 때 제대로 표시하는 데 필요한 필수 문서는 다운로드되지 않습니다. -r을 -l과 함께 사용하면 도움이 될 수 있지만 Wget은 일반적으로 외부 문서와 인라인 문서를 구분하지 않으므로 일반적으로 필수 문서가 누락 된“리프 문서 ”가 남습니다.
예를 들어, document 1.html에 1.gif를 참조하는 “<IMG>”태그와 외부 문서 2.html을 가리키는 “<A>”태그가 있다고 가정하십시오. 2.html은 비슷하지만 이미지는 2.gif이고 3.html에 링크되어 있다고 가정하십시오. 이것이 임의로 높은 숫자까지 계속된다고 가정 해보십시오.
명령을 실행하면 :
wget -r -l 2 http : // <site> /1.html
그러면 1.html, 1.gif, 2.html, 2.gif 및 3.html이 다운로드됩니다. 보시다시피 Wget은 재귀를 중지 할 위치를 결정하기 위해 1.html에서 홉 수 (최대 2 개) 만 계산하기 때문에 3.html에는 필수 3.gif가 없습니다. 그러나이 명령으로
wget -r -l 2 -p http : // <site> /1.html
위의 모든 파일과 3.html의 필수 3.gif가 다운로드됩니다. 비슷하게,
wget -r -l 1 -p http : // <site> /1.html
1.html, 1.gif, 2.html 및 2.gif가 다운로드됩니다. 다음과 같이 생각할 수 있습니다.
wget -r -l 0 -p http : // <site> /1.html
1.html 및 1.gif 만 다운로드하지만 불행히도 -l 0은 -l inf–와 동일하므로 무한 재귀이므로 그렇지 않습니다. 명령 줄 또는 -i URL 입력 파일에 지정된 단일 HTML 페이지 (또는 소수의 HTML 페이지)와 해당 필수 조건을 다운로드하려면 -r 및 -l을 그대로 두십시오.
wget -p http : // <site> /1.html
Wget은 -r이 지정된 것처럼 작동하지만 해당 단일 페이지와 해당 필수 항목 만 다운로드됩니다. 해당 페이지에서 외부 문서로의 링크는 따르지 않습니다. 실제로 단일 페이지와 모든 필수 구성 요소를 별도의 웹 사이트에있는 경우에도 다운로드하고 로트가 제대로 로컬로 표시되도록하려면이 저자는 -p 외에도 몇 가지 옵션을 사용합니다.
wget -E -H -k -K -p http : // <site> / <document & gt ;
이 항목을 마치려면 외부 문서 링크에 대한 Wget의 아이디어가 “<A>”태그, “<AREA>”태그 또는 “<이외의”<LINK> “태그에 지정된 URL임을 알아야합니다. LINK REL = “stylesheet”> “.