將URL按一定的格式進行拆分
- 使用 urllib.parse.urlparse將url分為6個部分,返回一個包含6個字符串項目的元組:協議、位置、路徑、參數、查詢、片段
參照官方地址:https://docs.python.org/3/library/urllib.parse.html
import urllib.parse #urlparse將url分為6個部分 url ="https://i.cnblogs.com/EditPosts.aspx?opt=1" url1 = "cheme://netloc/path;parameters?query#fragment" url_change = urllib.parse.urlparse(url) print(url_change)
輸出結果為:
ParseResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', params='', query='opt=1', fragment='')
其中 scheme 是協議 netloc 是域名服務器 path 相對路徑 params是參數,query是查詢的條件
- 使用 urllib.parse.urlsplit 將url分為5個部分,返回一個包含字符串項目的元組:協議、位置、路徑、查詢、片段
1 import urllib.parse 2 #urlsplit將url分為5個部分 3 url ="https://i.cnblogs.com/EditPosts.aspx?opt=1" 4 url_change = urllib.parse.urlsplit(url) 5 print(url_change)
輸出結果為:
ParseResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx',query='opt=1', fragment='')
其中 scheme 是協議 netloc 是域名服務器 path 相對路徑 ,query是查詢的條件
對URL按照一定的規格進行拼接
- 使用 urllib.parse.urljoin將相對的一個地址組合成一個url,對於輸入沒有限制,開頭必須是http://或者https://,否則將不組合前面的部分。
1 import urllib.parse 2 host = "https://127.0.0.1" 3 #host ="127.0.0.1" 4 port = "8888" 5 new_url = urllib.parse.urljoin(host,port) 6 print(new_url)
輸出結果為:
https://127.0.0.1/8888
如果 host ="127.0.0.1",則輸出的只是: 8888
parse_qs 有幾種實現
- urllib.parse.parse_qs 返回字典
- urllib.parse.parse_qsl 返回列表
import urllib.parse #urlparse將url分為6個部分 url ="https://i.cnblogs.com/EditPosts.aspx?opt=1" url_change = urllib.parse.urlparse(url) # 將url拆分為6個部分 query = url_change.query #取出拆分后6個部分中的查詢模塊query lst_query = urllib.parse.parse_qsl(query) #使用parse_qsl返回列表 dict1 =dict(lst_query) #將返回的列表轉換為字典 dict_query =urllib.parse.parse_qs(query) #使用parse_qs返回字典 print("使用parse_qsl返回列表 :",lst_query) print("將返回的列表轉換為字典 :",dict1) print("使用parse_qs返回字典 : ",dict_query) # data = "test=test&test2=test2&test2=test3" # print(urllib.parse.parse_qsl(data)) #返回列表 # print(urllib.parse.parse_qs(data)) #返回字典