작동하는 웹 페이지의 로컬 사본 다운로드 [닫기]


211

웹 페이지의 로컬 사본을 다운로드하고 모든 CSS, 이미지, 자바 스크립트 등을 얻고 싶습니다.

이전 토론 (예 : 여기여기 둘 다 2 년 이상 된)에서 일반적으로 두 가지 제안이 제시됩니다 : wget -phttrack . 그러나 이러한 제안은 모두 실패합니다. 이러한 도구 중 하나를 사용하여 작업을 수행하는 데 도움을 주셔서 감사합니다. 대안도 사랑 스럽습니다.


옵션 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 : 다른 도구?

일부 사람들은 유료 도구를 제안했지만 무료 솔루션이 없다고 믿을 수는 없습니다.


19
답변이 효과가 없다면 다음을 시도 wget -E -H -k -K -p http://example.com하십시오. 크레딧 : superuser.com/a/136335/94039
its_me

이를위한 소프트웨어 인 Teleport Pro도 있습니다.
pbies

3
wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com
davidcondrey

답변:


262

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. 

2
나는 이것을 시도했지만 어떻게 든 내부 링크 index.html#link-to-element-on-same-page가 작동 을 멈췄다.
rhand


12
사용자 에이전트없이 wget을 사용하는 경우 일부 서버는 403 코드로 응답합니다.-U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4'
nikoskip

45
여전히 이미지가 누락 된 것을 발견하면 다음을 추가하십시오. -e robots = off ..... wget은 robots.txt를 실제로 읽고 존중합니다. 일했다!
John Hunt

24
얻기 위해 외국 호스트의 자원 사용-H, --span-hosts
davidhq
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.