在URL

2011-03-03 20 views
1

解释相对路径,我用Python写一个“的WebCrawler”,需要一个URL,并做了深度优先搜索以下链接到一些有限的深度。我遇到的问题是在URLS中解释相对路径。在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/上有一个链接<a href="Finalprojects.pdf">here</a>,它解析为“http://math.colgate.edu/~mionescu/math399s11/Finalprojects.pdf”。

有人能解释这种不一致性给我吗?我怎样才能确定如何在我的抓取工具中解决这些路径?

回答

3

此“明显”不一致的原因是learnyouahaskell网站在其来源中使用<base href="">标记。这指示所有无域的hrefs使用基地作为他们的起点。

没有这个基础标签如预期它会出现(您发布的第一个链接),并担任就像math.colgate.edu链接。

+0

我看,这是非常合情合理的。是否存在可以改变链接解决方式的其他HTML标签? – jjoelson

+0

不是直接在HTML中,但我已经看到它完成w/JavaScript拾取事件,甚至用服务器301/302重定向。实际的文件位置也经常被诸如保险丝之类的框架混淆,其中一切都显示为URI参数。 – iivel