解決requests獲取源代碼時中文亂碼問題


用requests獲取源代碼時,如果是中文網頁,就可能會出現亂碼,下面我以中關村的網站為例:

import requests

url = 'http://desk.zol.com.cn/meinv/'
r = requests.get(url)
print r.text

執行上面這個腳本你會看到中文部分都變成亂碼。

print r.encoding

通過上面的代碼你會發現從requests獲取到的編碼是ISO-8859-1,而該網頁的編碼是gb2312,所以打印出來的編碼就都變成亂碼了,那么該如何解決這個問題呢?

其實只需將編碼設為gb2312即可,完整的代碼如下:

import requests

url = 'http://desk.zol.com.cn/meinv/'
r = requests.get(url)
r.encoding = 'gb2312'
print r.text

有些童鞋喜歡用content來獲取源代碼,如果直接將上面代碼中的text改為content的話,你會發現獲取到的源代碼依舊是亂碼,所以上面的代碼不適用於content方式獲取源代碼。

通過content獲取源代碼的童鞋可以看這里:

import requests
from lxml import etree

url = 'http://desk.zol.com.cn/meinv/'
r = requests.get(url)
code = r.content.decode('gb2312')
print code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM