很多同學會遇到python爬蟲得到的html亂碼的問題。其實這個問題搞清楚邏輯,就能夠解決。
一般爬蟲
import requests
from urllib.request import quote
# 找到乙個電影鏈結
name = "無名之輩"
url=''+str(quote(name.encode('gbk')))
res=requests.get(url)
html=res.text
點開html中的鏈結,看到亂碼了。
圖1:亂碼
2. 問題處理
①首先,在google中輸入電影「無名之輩」的鏈結(然後ctrl+u,檢視源**頁。
圖2:點開google瀏覽器的源**頁
②在源**第4行,找到charset=gb2312,說明這個網頁的字型是gb2312的格式。python預設字型是utf-8。轉碼!
③轉碼
import requests
from urllib.request import quote
# 找到電影鏈結
name = "無名之輩"
url=''+str(quote(name.encode('gbk')))
res=requests.get(url)
# 轉碼:至關重要
res.encoding = 'gb2312'
html=res.text
加上轉碼一行,那麼html就正常了。
圖3:轉碼之後的爬蟲結果
3.結語
以上就是亂碼問題的處理。希望對大家有益~
gb2312學習筆記
1,gb 2312中對所收漢字進行了 分割槽 處理,每區含有94個漢字 符號。01 09區為特殊符號。16 55區為一級漢字,按拼音排序。56 87區為二級漢字,按部首 筆畫排序。10 15區及88 94區則未有編碼。舉例來說,啊 字是gb2312之中的第乙個漢字,它的區位碼就是1601。2,在使用...
GB2312編碼範圍
gb2312編碼範圍 a1a1 fefe,其中漢字編碼範圍 b0a1 f7fe。gb2312編碼是第乙個漢字編碼國家標準,由中國國家標準總局1980年發布,1981年5月1日開始使用。gb2312編碼共收錄漢字6763個,其中一級漢字3755個,二級漢字3008個。同時,gb2312編碼收錄了包括拉...
02 抓取足球比賽結果之gb2312導致亂碼的解決
爬取所有完賽列表 import requests if name main 瀏覽器偽裝 headers kw input 輸入賽程年月日開始採集資料 這裡需要指定日期格式為 20200101 response變數為第一次爬取的完賽列表 response requests.get kw htm hea...