我正在python中编写一个“webcrawler”,它接受一个URL并在链接到某个有限深度之后进行深度优先搜索。我遇到的问题是解释URLS中的相对路径。
在页面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”。
有人可以向我解释这种不一致吗?如何确定如何在我的抓取工具中解析这些路径?
答案 0 :(得分:3)
这种“明显”不一致的原因是,learnyouahaskell网站在其来源中使用了<base href="">
标记。这将指示所有无域无人值守使用基数作为起点。
如果没有基本标记,它会按预期显示(您发布的第一个链接)并且就像math.colgate.edu
链接一样。