2011-03-03 3 views
1

필자는 파이썬에서 URL을 사용하고 제한된 깊이의 링크로 깊이 우선 검색을하는 'webcrawler'를 작성하고 있습니다. 내가 겪고있는 문제는 URL의 상대 경로를 해석하는 것입니다.URL에 상대 경로 해석하기

페이지의 http://learnyouahaskell.com/introduction/에는 "시작 중"링크가 있습니다. <a href="starting-out" class="nxtlink">Starting Out</a>처럼 보입니다. 이 링크가 "http://learnyouahaskell.com/introduction/starting-out"또는 "http://learnyouahaskell.com/starting-out"을 참조하는지 여부를 어떻게 확인할 수 있습니까? 두 번째 것은 내 브라우저에 따라 정확합니다.

페이지의 http://math.colgate.edu/~mionescu/math399s11/에는 "http://math.colgate.edu/~mionescu/math399s11/Finalprojects.pdf"로 해석되는 <a href="Finalprojects.pdf">here</a> 링크가 있습니다.

누군가이 불일치를 나에게 설명 할 수 있습니까? 크롤러에서 이러한 경로를 어떻게 해결해야 하는지를 어떻게 결정할 수 있습니까?

답변

3

이 '명백한'불일치의 이유는 learnyouahaskell 사이트가 자신의 출처에 <base href=""> 태그를 사용하고 있기 때문입니다. 이것은 도메인이없는 모든 href에게베이스를 시작점으로 사용하도록 지시합니다.

기본 태그가 없으면 예상대로 (게시 한 첫 번째 링크) 나타 났으며 math.colgate.edu 링크처럼 작동합니다.

+0

나는 그것이 완벽하다는 것을 알았다. 링크가 어떻게 해석되는지를 변경할 수있는 다른 HTML 태그가 있습니까? – jjoelson

+0

HTML에서 직접적으로 볼 수는 없지만 JavaScript가 이벤트를 픽업하거나 서버 301/302 리다이렉트로 끝난 것을 보았습니다. 실제 파일 위치는 종종 모든 것이 URI 매개 변수로 나타나는 fusebox와 같은 프레임 워크로 난독 화됩니다. – iivel