실제 페이지를 저장하지 않고 wget으로 주어진 도메인에서 액세스 가능한 모든 URL을 다우로드합니까?


4

사이트를 로컬로 미러링하지 않고도 주어진 도메인에서 유효한 모든 URL을 확인하려고합니다.

사람들은 일반적으로 모든 페이지를 다운로드하기를 원하지만 www.example.com/page1, www.example과 같은 특정 도메인 (예 : www.example.com)에서 직접 URL 목록을 가져 오려고합니다. com / page2 등

이것을 위해 wget을 사용하는 방법이 있습니까? 아니면 더 좋은 도구가 있습니까?


2
각 페이지의 링크를 결정하기 위해, 당신은 (즉 그것을 다운로드) 페이지를 참조해야합니다
브라이언 애드킨스

@BrianAdkins : 다운로드해도 괜찮지 만 페이지 내용이 아닌 URL 만 유지하고
싶습니다

거기의 --spider페이지를 다운로드하는 옵션은, 그러나 그것을 저장하지 않습니다.
LawrenceC

답변:


2

조잡한 스크립트는 다음과 같습니다.

curl -s whaturl |
  grep -o "<a href=[^>]*>" |
  sed -r 's/<a href="([^"]*)".*>/\1/' |
  sort -u

grep종목 모두 href들. sed로부터의 URL 부분 밖으로 추천 href. sort필터링 중복 링크.

또한 wget -O -대신에 작동 curl -s합니다.

출력 예 :

$ curl -s http://stackexchange.com/users/148837/lesmana?tab=accounts | grep -o "<a href=[^>]*>" | sed -r 's/<a href="([^"]*)".*>/\1/' | sort -u
/
/about
/about/contact
/blogs
/leagues
/legal
/legal/privacy-policy
/newsletters
/questions
/sites
/users/148837/lesmana
/users/148837/lesmana?tab=activity
/users/148837/lesmana?tab=favorites
/users/148837/lesmana?tab=reputation
/users/148837/lesmana?tab=subscriptions
/users/148837/lesmana?tab=top
/users/login?returnurl=%2fusers%2f148837%2flesmana%3ftab%3daccounts
http://area51.stackexchange.com/users/16563/lesmana
http://askubuntu.com/users/1366/
http://blog.stackexchange.com
http://blog.stackoverflow.com/2009/06/attribution-required/
http://chat.stackexchange.com/
http://creativecommons.org/licenses/by-sa/3.0/
http://gaming.stackexchange.com/users/2790/
http://meta.stackoverflow.com
http://meta.stackoverflow.com/users/147747/
http://programmers.stackexchange.com/users/116/
http://serverfault.com/users/45166/
http://stackoverflow.com/users/360899/
http://superuser.com/users/39401/
http://twitter.com/stackexchange
http://unix.stackexchange.com/users/1170/
http://www.facebook.com/stackexchange
https://plus.google.com/+StackExchange

아주 좋아요! CURL은 재귀 할 수 없기 때문에 무시했습니다. 나는 httrack 이이 문제를 적절하게 해결 한다는 것을 알았습니다 .
fccoelho

4

좋아, 나는 내 자신의 대답을 찾아야했다.

내가 사용하는 도구는 httrack 입니다.

httrack -p0 -r2 -d www.example.com
  • -p0 옵션은 (페이지를 저장하지) 스캔을 말한다;
  • -rx 옵션은 그것을 검색의 깊이를 알려줍니다
  • -d 옵션은 같은 주요 도메인에 머물를 알려줍니다

스캔 한 URL을 지정된 파일에 추가 할-% L도 있지만 작동하지 않는 것 같습니다. 그러나 hts-cache 디렉토리에서 방문한 모든 URL과 이에 대한 추가 정보가 포함 된 new.txt 라는 TSV 파일을 찾을 수 있기 때문에 문제가되지 않습니다 . 다음 파이썬 코드를 사용하여 URL을 추출 할 수 있습니다.

with open("hts-cache/new.txt") as f:
    t = csv.DictReader(f,delimiter='\t')
    for l in t:
        print l['URL']
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.