2012-10-17 5 views
1

저는 종종 아주 큰 웹 사이트를 미러링하기 위해 wget을 사용합니다. 내가 wget이 다른 호스트에있는 페이지 요구 사항을 포착하도록 지정하지 못했기 때문에 핫 링크 된 콘텐츠가 포함 된 사이트 (이미지, 비디오, CSS, j)가 문제가됩니다. 호스트. hotlinked 된 것을 포함하여 -핫 링크 된 조건을 가진 재귀 wget

예를 들어, https://dl.dropbox.com/u/11471672/wget-all-the-things.html

이의이 내가 모든 페이지 요건을 포함하여, 완전히 거울을 부탁 큰 사이트입니다 척하자이 페이지를 살펴 보자. 전체 웹

wget -e robots=off -r -l inf -pk -H --ignore-tags=a 
에게 다운로드 진행

wget -e robots=off -r -l inf -pk -H 

^^이 hotlinked 이미지를 포함한 모든 것을 얻는 hotlinked 이미지를 제외한 모든 것을 얻을 수 있지만, 격렬하게 통제를 벗어나 ^^

wget -e robots=off -r -l inf -pk 

,

^^ 첫 페이지가 핫 링크 및 로컬 이미지를 포함하여 스코프 외부의 사이트에 대한 하이퍼 링크를 따르지 않지만 다음 페이지의 하이퍼 링크를 따라 가지 않습니다. 사이트.

나는 이것을 수행하는 다양한 도구와 방법이 있다는 것을 알고있다. (HTTrack과 Heritrix는 다른 호스트의 hotlinked 컨텐츠와 다른 호스트의 하이퍼 링크를 구별 할 수있다.) 그러나 나는 이것을보고 싶다. wget으로 가능합니다. 이상적으로 외부 컨텐트, 요청 및 헤더를 출력 할 WARC 파일에 포함 시키려면 사후 처리에서이 작업을 수행하지 마십시오.

답변

3

page-reqs에만 스팬 호스트를 지정할 수 없습니다. -H는 모두 또는 아무것도 아닙니다. -r과 -H는 전체 인터넷을 중단시킬 것이므로이를 사용하는 크롤링을 분할해야합니다. 핫 링크 된 페이지 요청을 잡으려면 wget을 두 번 실행해야합니다. 한 번은 사이트의 구조를 재귀 적으로 사용하고 hotlinked req는 한 번 수집해야합니다.

3) wget -pH [other non-r switches] -i [infile]

을 제기 할

1) wget -r -l inf [other non-H non-p switches] http://www.example.com

2) 사이트 구조 (find . | grep html의 모든 HTML 파일 목록을 작성) 및 파이프 :이 방법으로 행운을 했어

1 단계는 로컬 시스템에 사이트의 구조를 작성하고 HTML 페이지를 제공합니다. 2 단계는 페이지 목록을 제공하고 3 단계는 해당 페이지에 사용 된 모든 자산을 표시합니다. 핫 링크 된 에셋이 아직 존재하는 한 로컬 컴퓨터에서 완벽한 미러를 만듭니다.

0

정규식을 사용하여이 작업을 처리했습니다. 당신은 아마 조정 각 특정 사이트에 대한 정규식 등에서 특정 요소를 뽑아 오기를해야합니다 http://www.example.com/docs

wget --mirror --convert-links --adjust-extension \ 
--page-requisites --span-hosts \ 
--accept-regex '^http://www\.example\.com/docs|\.(js|css|png|jpeg|jpg|svg)$' \ 
http://www.example.com/docs 

이런 식으로 뭔가를 반영합니다. 예를 들어 일부 사이트에서는 CSS 파일 (예 : style.css?key=value)에 매개 변수를 사용하고 싶지만이 예는 제외됩니다.다른 호스트에서 포함 할

파일은 아마 적어도

  • 이미지가 포함됩니다 : png jpg jpeg gif
  • 글꼴 : ttf otf woff woff2 eot
  • 기타 : js css svg

누구는 어떤 다른 사람을 알아?

그래서 당신이 원하는 실제 정규식은 아마 다음과 같을 것이다 (아무 바꿈을 한 문자열로) :

^http://www\.example\.org/docs|\.([Jj][Ss]|[Cc][Ss][Ss]|[Pp][Nn][Gg]|[Jj] 
[Pp][Ee]?[Gg]|[Ss][Vv][Gg]|[Gg][Ii][Ff]|[Tt][Tt][Ff]|[Oo][Tt][Ff]|[Ww] 
[Oo][Ff][Ff]2?|[Ee][Oo][Tt])(\?.*)?$