wget: 이미 다운로드한 폴더에 --convert-links가 있습니까?

wget: 이미 다운로드한 폴더에 --convert-links가 있습니까?

wget다운로드와 기능을 분리 하는 방법이 있나요 --convert-links? 간단히 말해서 wget및/또는 에 익숙하지 않은 사람들을 위해 wget을 사용하여 웹사이트를 다운로드할 수 있습니다. 다운로드한 웹사이트가 오프라인에서 작동하도록 다운로드한 html 파일을 수정합니다. / 등을 변환하여 이를 수행합니다 . 속성은 원격 웹 사이트가 아닌 로컬 파일을 참조합니다.--convert-links--convert-linkshrefsrc

이것은공식적인 설명:

-k --링크 변환

다운로드가 완료되면 문서의 링크를 로컬 보기에 적합하도록 변환하세요. 이는 표시되는 하이퍼링크뿐만 아니라 포함된 이미지, 스타일시트 링크, HTML이 아닌 콘텐츠에 대한 하이퍼링크 등과 같은 외부 콘텐츠에 연결되는 문서의 모든 부분에도 영향을 미칩니다.

각 링크는 다음 두 가지 방법 중 하나로 변경됩니다.

• Wget에서 다운로드한 파일에 대한 링크는 상대 링크로 가리키는 파일을 참조하도록 변경됩니다.

예: 다운로드한 파일 /foo/doc.html이 /bar/img.gif(역시 다운로드됨)에 링크되는 경우 doc.html의 링크는 ../bar/img.gif를 가리키도록 수정됩니다. 이 변환은 모든 디렉터리 조합에 대해 안정적입니다.

• Wget으로 다운로드되지 않은 파일에 대한 링크는 호스트 이름과 해당 파일이 가리키는 위치의 절대 경로를 포함하도록 변경됩니다.

예: 다운로드한 파일 /foo/doc.html이 /bar/img.gif(또는 ../bar/img.gif)에 링크되는 경우 doc.html의 링크는 http://hostname /을 가리키도록 수정됩니다. 바/img.gif.

따라서 로컬 탐색은 안정적으로 작동합니다. 링크된 파일이 다운로드된 경우 링크는 로컬 이름을 참조하고, 다운로드되지 않은 경우 링크는 끊어진 링크를 표시하는 대신 전체 인터넷 주소를 참조합니다. 이전 링크가 상대 링크로 변환되므로 다운로드한 계층 구조를 다른 디렉터리로 이동할 수 있습니다.

Wget은 다운로드가 완료된 후에만 어떤 링크가 다운로드되었는지 알 수 있습니다. 따라서 -k에 의해 수행된 작업은 모든 다운로드가 끝날 때 수행됩니다.

(재귀) 다운로드가 수동으로 중단되고 다시 시작되거나 처음에 지정되지 않은 경우 파일 내에서 일반 링크를 얻으려면 -k어떻게 해야 합니까 ?html

--backup-convertedwget은 링크를 다운로드하자마자 변환하기 때문에 프로세스를 더욱 강력하게 만들지 않는 것 같습니다 .모든 것(누락된 파일 없음) 또는 자체 파일(xpath 등)

답변1

파일은 ASCII 텍스트 .html이므로 을 포함하는 파일을 사용할 수 있으며 수정되지 않은 파일은 ..htmlsedhttp://bad.url/good.parthttps://bad.url/good.partgood.url*.html*.html.bak

find . -type f -name '*.html' -print0 | \
  xargs -0 -r sed -i.bak -e 's%://bad\.url/%://good.url/%'

자연스럽게 읽다man find xargs sed

관련 정보