urlparse模塊主要是把url拆分爲6部分,並返回元組。而且能夠把拆分後的部分再組成一個url。主要有函數有urljoin、urlsplit、urlunsplit、urlparse等。 php
urlparse.urlparse(urlstring[, scheme[, allow_fragments]]) 服務器
將urlstring解析成6個部分,它從urlstring中取得URL,並返回元組 (scheme, netloc, path, parameters, query, fragment),可是其實是基於namedtuple,是tuple的子類。它支持經過名字屬性或者索引訪問的部分URL,每一個組件是一串字符,也有多是空的。組件不能被解析爲更小的部分,%後面的也不會被解析,分割符號並非解析結果的一部分,除非用斜線轉義,注意,返回的這個元組很是有用,例如能夠用來肯定網絡協議(HTTP、FTP等等 )、服務器地址、文件路徑,等等。 網絡
2 |
>>> url = urlparse.urlparse( 'http://www.baidu.com/index.php?username=guol' ) |
4 |
ParseResult(scheme = 'http' , netloc = 'www.baidu.com' , path = '/index.php' , params = ' ', query=' username = guol ', fragment=' ') |
urlparse.urlunparse(parts)
從一個元組構建一個url,元組相似urlparse返回的,它接收元組(scheme, netloc, path, parameters, query, fragment)後,會從新組成一個具備正確格式的URL,以便供Python的其餘HTML解析模塊使用。 函數
2 |
>>> url = urlparse.urlparse( 'http://www.baidu.com/index.php?username=guol' ) |
4 |
ParseResult(scheme = 'http' , netloc = 'www.baidu.com' , path = '/index.php' , params = ' ', query=' username = guol ', fragment=' ') |
5 |
>>> u = urlparse.urlunparse(url) |
7 |
http: / / www.baidu.com / index.php?username = guol |
urlparse.urlsplit(urlstring[, scheme[, allow_fragments]])
主要是分析urlstring,返回一個包含5個字符串項目的元組:協議、位置、路徑、查詢、片斷。allow_fragments爲False時,該元組的組後一個項目老是空,無論urlstring有沒有片斷,省略項目的也是空。urlsplit()和urlparse()差很少。不過它不切分URL的參數。適用於遵循RFC2396的URL,每一個路徑段都支持參數。這樣返回的元組就只有5個元素。 url
2 |
>>> url = urlparse.urlparse( 'http://www.baidu.com/index.php?username=guol' ) |
4 |
ParseResult(scheme = 'http' , netloc = 'www.baidu.com' , path = '/index.php' , params = ' ', query=' username = guol ', fragment=' ') |
5 |
>>> url = urlparse.urlsplit( 'http://www.baidu.com/index.php?username=guol' ) |
7 |
SplitResult(scheme = 'http' , netloc = 'www.baidu.com' , path = '/index.php' , query = 'username=guol' , fragment = '') |
urlparse.urlunsplit(parts)
urlunsplit使用urlsplit()返回的值組合成一個url spa
urlparse.urljoin(base, url[, allow_fragments]) .net
urljoin主要是拼接URL,它以base做爲其基地址,而後與url中的相對地址相結合組成一個絕對URL地址。函數urljoin在經過爲URL基地址附加新的文件名的方式來處理同一位置處的若干文件的時候格外有用。須要注意的是,若是基地址並不是以字符/結尾的話,那麼URL基地址最右邊部分就會被這個相對路徑所替換。若是但願在該路徑中保留末端目錄,應確保URL基地址以字符/結尾。
code
2 |
>>> urlparse.urljoin( 'http://www.oschina.com/tieba' , 'index.php' ) |
3 |
'http://www.oschina.com/index.php' |
4 |
>>> urlparse.urljoin( 'http://www.oschina.com/tieba/' , 'index.php' ) |
5 |
'http://www.oschina.com/tieba/index.php' |