웹 페이지의 로컬 사본을 다운로드하고 모든 CSS, 이미지, 자바 스크립트 등을 얻고 싶습니다.
이전 토론 (예 : 여기 와 여기 둘 다 2 년 이상 된)에서 일반적으로 두 가지 제안이 제시됩니다 : wget -p
및 httrack . 그러나 이러한 제안은 모두 실패합니다. 이러한 도구 중 하나를 사용하여 작업을 수행하는 데 도움을 주셔서 감사합니다. 대안도 사랑 스럽습니다.
옵션 1: wget -p
wget -p
모든 웹 페이지의 전제 조건 (css, 이미지, js)을 성공적으로 다운로드합니다. 그러나 웹 브라우저에서 로컬 사본을로드 할 때 해당 전제 조건에 대한 경로가 웹 버전에서 수정되지 않았으므로 페이지에서 전제 조건을로드 할 수 없습니다.
예를 들면 다음과 같습니다.
- 페이지의 html
<link rel="stylesheet href="https://stackoverflow.com/stylesheets/foo.css" />
에서 새로운 상대 경로를 가리 키도록 수정해야합니다.foo.css
- CSS 파일에서
background-image: url(/images/bar.png)
마찬가지로 조정해야합니다.
wget -p
경로가 정확 하도록 수정하는 방법 이 있습니까?
옵션 2 : httrack
httrack
전체 웹 사이트를 미러링하는 훌륭한 도구 인 것 같지만 단일 페이지의 로컬 복사본을 만드는 데 사용하는 방법은 확실하지 않습니다. httrack 포럼에서이 주제 (예 : here ) 에 대해 많은 토론이 있지만 아무도 방탄 솔루션을 가지고 있지 않은 것 같습니다.
옵션 3 : 다른 도구?
일부 사람들은 유료 도구를 제안했지만 무료 솔루션이 없다고 믿을 수는 없습니다.
답변
wget은 당신이 원하는 것을 할 수 있습니다. 다음을 시도하십시오.
wget -p -k http://www.example.com/
그러면 -p
사이트를 올바르게 보는 데 필요한 모든 요소 (css, 이미지 등)가 표시됩니다. (가) -k
모든 링크 변경됩니다이 온라인 나타난대로 페이지를 오프라인으로 볼 수 있도록 (CSS 및 이미지들을 포함합니다).
Wget 문서에서 :
‘-k’
‘--convert-links’
After the download is complete, convert the links in the document to make them
suitable for local viewing. This affects not only the visible hyperlinks, but
any part of the document that links to external content, such as embedded images,
links to style sheets, hyperlinks to non-html content, etc.
Each link will be changed in one of the two ways:
The links to files that have been downloaded by Wget will be changed to refer
to the file they point to as a relative link.
Example: if the downloaded file /foo/doc.html links to /bar/img.gif, also
downloaded, then the link in doc.html will be modified to point to
‘../bar/img.gif’. This kind of transformation works reliably for arbitrary
combinations of directories.
The links to files that have not been downloaded by Wget will be changed to
include host name and absolute path of the location they point to.
Example: if the downloaded file /foo/doc.html links to /bar/img.gif (or to
../bar/img.gif), then the link in doc.html will be modified to point to
http://hostname/bar/img.gif.
Because of this, local browsing works reliably: if a linked file was downloaded,
the link will refer to its local name; if it was not downloaded, the link will
refer to its full Internet address rather than presenting a broken link. The fact
that the former links are converted to relative links ensures that you can move
the downloaded hierarchy to another directory.
Note that only at the end of the download can Wget know which links have been
downloaded. Because of that, the work done by ‘-k’ will be performed at the end
of all the downloads.