當前位置:成語大全網 - 書法字典 - 如何解決python中的url編碼問題

如何解決python中的url編碼問題

最近為了捕捉js代碼生成的壹些動態數據,需要模擬js請求來獲取所需的數據。遇到url編解碼問題時,總結壹下遇到的問題。只有總結才能進步,才能讓學到的知識更清晰。編碼和解碼url,python為調用提供了方便的接口。

當url中的查詢有特殊字符(不是url的保留字)時,需要進行編碼。當網址中有漢字時,需要特殊處理才能正確編碼。以下僅針對這種情況,當然也適用於純英文字符的URL。

(1) url編碼:

導入urllib

Url = 'wd=哈哈'?#如果這個網站的編碼是gbk,需要解碼,從gbk到unicode,再從Unicode到utf-8格式。

url = url.decode('gbk ',' replace ')

打印urllib.quote(url.encode('utf-8 ',' replace '))

結果:3a % 2f % 2f test . com % 2fs % 3fwd % 3d % E5 % 93% 88% E5 % 93% 88。

(2)網址解碼:

導入urllib

encoded _ URL = est . com % 2fs % 3fwd % 3d % E5 % 93% 88% E5 % 93% 88 '

打印urllib.unquote(encoded_url)。解碼(' utf-8 ','替換')。編碼(' gbk ',' replace ')?#依次

函數調用的參數和結果都是用utf-8編碼的,所以在對url進行編碼時,參數字符串的編碼需要從原來的編碼轉換成utf-8。

解碼url時,需要將解碼結果從utf-8轉換為原始編碼格式。

根據網站采用的不同編碼,要麽是gbk,要麽是utf-8,分配不同的編碼,進行不同的url轉碼。GBK格式,壹個漢字轉換成%xx%xx,* * *兩組;Utf-8格式,壹個漢字轉換成% xx% xx,* * *三組。

& gt& gt& gt?進口?sys,urllib?

& gt& gt& gt?s?=?杭州?

& gt& gt& gt?URL lib . quote(s . decode(sys . stdin . encoding)。編碼(' gbk '))

%BA%BC%D6%DD?

& gt& gt& gt?URL lib . quote(s . decode(sys . stdin . encoding)。編碼(' utf8 '))

%E6%9D%AD%E5%B7%9E '?

【python】?觀平原?復制

答?=?“墨西哥女孩四年被拐4萬次?嬰兒成為人質-搜狐新聞"?

打印?urllib.quote(urllib.quote(a))?

經過兩次編碼轉換後,將變成:% 25e 5% 25 a2 % 25 A8 % 25 E8 % 25 a5 % 25bf % 25e 5% 2593% 25 a5 % 25e 5% 25 a5 % 25 B3 % 25e 5% 25ad % 25 a9 % 25 E8 % 25 a2 % 25ab % 25e 6% 25e 6。.................................................................................這個表格。

同樣需要兩次解碼才能得到中文。

最近用python寫了壹個小爬蟲,可以自動下載壹些東西,但是網址裏面有中文,中文好像是gbk編碼然後轉換成url。例如,如果我有壹個名為“歷史人物”的unicode字符串。pdf”,我把它轉換成網址後會是什麽?

t = " % 20% E5 % 8E % 86% E5 % 8F % B2 % E4 % B8 % 8A % E9 % 82% A3 % E4 % BA % 9B % E7 % 89% 9B % E4 % BA % BA % E4 % BB % AC . pdf ",?

但是,另壹個網站給出了S = " % C0 % FA % CA % B7 % C9 % CF % C4 % C7 % D0 % A9 % C5 % A3 % C8 % CB % C3 % C7。PDF”。

& gt& gt& gt打印URL lib . un quote(" % C0 % FA % CA % B7 % C9 % CF % C4 % C7 % D0 % A9 % C5 % A3 % C8 % CB % C3 % C7。PDF”)。解碼(' gbk ')。編碼(“utf-8”)

& gt& gt& gt歷史上那些牛人。便攜文檔格式