python解析url參數
『壹』 用python怎麼解析'%3cp%3e%e5%'
import urllib
rawurl=xxx
url=urllib.unquote(rawurl)
所用模塊:urllib
所用函數:urllib.unquote()
案例
import urllib
rawurl = "%E6%B2%B3%E6%BA%90"url = urllib.unquote(rawurl)print url
輸出
河源
問題擴展
urllib.unquote()目的是對url編碼進行解碼,與該函數對應的是編碼函數urllib.quote()
123
>>> import urllib>>> urllib.quote("河源")'%E6%B2%B3%E6%BA%90
URL為何要編碼、解碼?
通常如果一樣東西需要編碼,說明這樣東西並不適合傳輸。原因多種多樣,如Size過大,包含隱私數據。對於Url來說,之所以要進行編碼,是因為Url中有些字元會引起歧義。
例如,Url參數字元串中使用key=value鍵值對這樣的形式來傳參,鍵值對之間以&符號分隔,如/s?q=abc&ie=utf-8。如果你的value字元串中包含了=或者&,那麼勢必會造成接收Url的伺服器解析錯誤,因此必須將引起歧義的&和=符號進行轉義,也就是對其進行編碼。
又如,Url的編碼格式採用的是ASCII碼,而不是Unicode,這也就是說你不能在Url中包含任何非ASCII字元,例如中文。否則如果客戶端瀏覽器和服務端瀏覽器支持的字元集不同的情況下,中文可能會造成問題。
『貳』 url里有tvid=398da32a9這個信息,怎麼用python提取tvid等號後面的字元串
利用字元串匹配,這是url的參數,首先python 裡面有專門解析url的包urllib,可以將url分成各個部分,你可以獲取參數集合,或者你手動的根據?來截斷字元串,?後面的就是參數集合的字元串了。i
然後split("&")可以將各個參數和值分開。
對每個參數q匹配,q.find("tvid="),如果能匹配到,則根據返回額index號,獲取子串,q[index+5:]
就是最終想要的值了
『叄』 Python3 如何對url解碼
url編碼:
import urllib
url = 'http://test.com/s?wd=哈哈' #如果塵鉛早此網站編碼是激蠢gbk的話派雀,需要進行解碼,從gbk解碼成unicode,再從Unicode編碼編碼為utf-8格式。
url = url.decode('gbk', 'replace')
print urllib.quote(url.encode('utf-8', 'replace'))