urlparse模塊主要是把url拆分為6部分,并返回元組。并且可以把拆分后的部分再組成一個url。主要有函數有urljoin、urlsplit、urlunsplit、urlparse等。
urlparse.urlparse(urlstring[, scheme[, allow_fragments]])
將urlstring解析成6個部分,它從urlstring中取得URL,并返回元組 (scheme, netloc, path, parameters, query, fragment),但是實際上是基于namedtuple,是tuple的子類。它支持通過名字屬性或者索引訪問的部分URL,每個組件是一串字符,也有可能是空的。組件不能被解析為更小的部分,%后面的也不會被解析,分割符號并不是解析結果的一部分,除非用斜線轉義,注意,返回的這個元組非常有用,例如可以用來確定網絡協議(HTTP、FTP等等 )、服務器地址、文件路徑,等等。>>> import urlparse>>> url=urlparse.urlparse('http://www.baidu.com/index.php?username=guol')>>> PRint urlParseResult(scheme='http', netloc='www.baidu.com', path='/index.php', params='', query='username=guol', fragment='')>>> print url.netlocwww.baidu.com>>>urlparse.urlunparse(parts) 從一個元組構建一個url,元組類似urlparse返回的,它接收元組(scheme, netloc, path, parameters, query, fragment)后,會重新組成一個具有正確格式的URL,以便供Python的其他HTML解析模塊使用。
>>> import urlparse>>> url=urlparse.urlparse('http://www.baidu.com/index.php?username=guol')>>> print urlParseResult(scheme='http', netloc='www.baidu.com', path='/index.php', params='', query='username=guol', fragment='')>>> u=urlparse.urlunparse(url)>>> print uhttp://www.baidu.com/index.php?username=guolurlparse.urlsplit(urlstring[, scheme[, allow_fragments]]) 主要是分析urlstring,返回一個包含5個字符串項目的元組:協議、位置、路徑、查詢、片段。allow_fragments為False時,該元組的組后一個項目總是空,不管urlstring有沒有片段,省略項目的也是空。urlsplit()和urlparse()差不多。不過它不切分URL的參數。適用于遵循RFC2396的URL,每個路徑段都支持參數。這樣返回的元組就只有5個元素。
>>> import urlparse>>> url=urlparse.urlparse('http://www.baidu.com/index.php?username=guol')>>> print urlParseResult(scheme='http', netloc='www.baidu.com', path='/index.php', params='', query='username=guol', fragment='')>>> url=urlparse.urlsplit('http://www.baidu.com/index.php?username=guol')>>> print urlSplitResult(scheme='http', netloc='www.baidu.com', path='/index.php', query='username=guol', fragment='')urlparse.urlunsplit(parts) urlunsplit使用urlsplit()返回的值組合成一個url
urlparse.urljoin(base, url[, allow_fragments])
urljoin主要是拼接URL,它以base作為其基地址,然后與url中的相對地址相結合組成一個絕對URL地址。函數urljoin在通過為URL基地址附加新的文件名的方式來處理同一位置處的若干文件的時候格外有用。需要注意的是,如果基地址并非以字符/結尾的話,那么URL基地址最右邊部分就會被這個相對路徑所替換。如果希望在該路徑中保留末端目錄,應確保URL基地址以字符/結尾。>>> import urlparse>>> urlparse.urljoin('http://www.oschina.com/tieba','index.php')'http://www.oschina.com/index.php'>>> urlparse.urljoin('http://www.oschina.com/tieba/','index.php')'http://www.oschina.com/tieba/index.php'新聞熱點
疑難解答