簡介
urlparse模塊主要是用于解析url中的參數 對url按照一定格式進行 拆分或拼接。urlparse庫用于把url解析為各個組件,支持file,ftp,http,https, imap, mailto, mms, news, nntp, prospero, rsync, rtsp, rtspu, sftp, shttp, sip, sips, snews, svn, svn+ssh, telnet等幾乎所有的形式。
注意:根據其官網的說明,在Python3.0中,此庫已經更名為urllib.parse了。
使用說明
1.urlparse.urlparse
將url分為6個部分,返回一個包含6個字符串項目的元組:協議、位置、路徑、參數、查詢、片段。
import urlparseurl_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')print url_change輸出結果為:
ParseResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', params='', query='opt=1', fragment='')
其中 scheme 是協議 netloc 是域名服務器 path 相對路徑 params是參數,query是查詢的條件
urlparse.parse_qs(urlparse.urlparse(url).query)
這個是獲取urlparse分割后元祖中的某一項 urlparse.urlparse(url).query 獲取查詢條件
parse_qs 有幾種實現
urlparse.parse_qs 返回字典 urlparse.parse_qsl 返回列表2. urlparse.urlsplit
和urlparse差不多,將url分為5部分,返回一個包含5個字符串項目的元組:協議、位置、路徑、查詢、片段。
import urlparseurl_change = urlparse.urlsplit('https://i.cnblogs.com/EditPosts.aspx?opt=1')print url_changeSplitResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', query='opt=1', fragment='')
其中 scheme 是協議 netloc 是域名服務器 path 相對路徑 query是查詢的條件
3.urlparse.urljoin
將相對的地址組合成一個url,對于輸入沒有限制,開頭必須是http://,否則將不組合前面。
import urlparsenew_url = urlparse.urljoin('https://baidu.com/ssss/','88888')print new_url輸出 https://baidu.com/ssss/88888
如果輸入錯誤信息 如 new_url = urlparse.urljoin('122','88888') 并不會將兩者合并 輸出‘88888'
urlparse獲取url后面的參數
如果給定你一個URL,比如: http://url/api?param=2¶m2=4 我們需要獲取參數名和參數值的話,那可以用到python標準庫urlparse
import urlparsedef qs(url): query = urlparse.urlparse(url).query return dict([(k,v[0]) for k,v in urlparse.parse_qs(query).items()])
print qs('http://url/api?param=2¶m2=4') 返回的結果: {'param':'2','param2':'4'}
注意:這個模塊的parse_qs方法在2;5的版本是不存在的,只有2.5以上的才有,你需要調用該方法的時候可以先通過dir(urlparse)查看模塊urlparse是否有相應的方法。
新聞熱點
疑難解答