urljoin当绝对路径没有前导斜杠时

Mik*_*ikk 2 python url url-parsing urlparse

http://www.gilacountyaz.gov/government/assessor/index.php这样的网站有一堆内部链接应该是绝对路径,但没有前导斜杠.使用urlparse.urljoin结果解析它们时如下:

>>> import urlparse
>>> a = "http://www.gilacountyaz.gov/government/assessor/index.php"
>>> b = "government/assessor/address_change.php"
>>> urlparse.urljoin(a, b)
'http://www.gilacountyaz.gov/government/assessor/government/assessor/address_change.php'
Run Code Online (Sandbox Code Playgroud)

这会导致Web爬网程序没有意识到它已经访问过页面,并且可能存在无限循环.Firefox和Chrome能够发现问题并正确解析

http://www.gilacountyaz.gov/government/assessor/address_change.php
Run Code Online (Sandbox Code Playgroud)

有没有办法在Python中做同样的事情?请注意,假设始终使用前导斜杠不起作用,因为我们可能正在处理真正的相对路径.

Dan*_*ice 7

链接页面包含以下内容:

<head>
  <base href="http://www.gilacountyaz.gov/index.php"/>
</head>
Run Code Online (Sandbox Code Playgroud)

如果您使用该URL作为第一个参数,urljoin您将获得正确的结果.此标记允许您的浏览器正确解释这些链接.