标签:
在做网页抓取的时候经常会遇到一个问题就是页面中的链接是相对链接,这个时候就需要对链接进行url拼接,才能得到绝对链接。
url严格按照一定的格式构成,一般为如下5个字段:
详细可参考RFC:http://tools.ietf.org/html/rfc3986
url拼接一般包含如下几种情况:
1.相对链接不包含路径,则直接在父链接所在的路径级别后面加上该相对链接即可得到拼接的url:
例如:http://www.baidu.com, 相对链接:index.html,得到:http://www.baidu.com/index.html
http://www.baidu.com/index.html, 相对链接:hello.html,得到:http://www.baidu.com/hello.html
2.相对链接包含路径,则在父链接所在的路径级别后拼接相对路径得到拼接后的url:
例如: http://www.baidu.com/movie/123.html,相对链接:/contact/index.html,得到:http://www.baidu.com/movie/contact/index.html
3.更为复杂的情况是相对路径带有../,此时将按照../得到相应的路径再拼接url:
例如:http://www.baidu.com/movie/123.html,相对链接:../contact/index.html,得到:http://www.baidu.com/contact/index.html
如果html头部 有 <base>标记,例如:<base href="http://www.father.com/" />则该页面上的基准URL都以此为准,不考虑其父链的情况。
python中的常用的url拼接库为urlparse.urljoin(base, url, flag)
标签:
原文地址:http://www.cnblogs.com/chybot/p/4862191.html