python爬蟲中文不能正常顯示問題的解決
阿新 • • 發佈:2019-01-01
最近作業要用到網站(http://nba.sports.sina.com.cn/players.php)中的資料,初次爬取,中文不能正常顯示。查找了很多資料,參考了很多例子。理論沒了解很多,但最終實現效果了。直接貼專案中實現的程式碼:
import requests import urllib.request from lxml import etree #要抓取的頁面連結 url='http://nba.sports.sina.com.cn/players.php' r=requests.get(url) r.encoding='gb2312'#解決中文不能正常顯示s=etree.HTML(r.text) result=etree.tostring(s) file=s.xpath('//a/text()') print(file)
上面是一段完整的程式碼,網上很多時候給出了關鍵程式碼,但個人認為一些庫的使用還是挺重要的。
本程式解決中文不能正常顯示問題重要用到r.encoding,本專案涉及的網站編碼方式為“gb2312”(可通過檢視源頁面的charset屬性獲取),故該處引數設定為“gb2312”,經過嘗試設定為“gbk”也可以,查詢資料發現“gbk”包含全部中文字元在國家標準“gb2312”基礎上向後相容“gb2312”的標準。但是,又想到“utf-8”包含全世界所有國家需要用到的字元,又嘗試修改為“utf-8”,中文依舊沒能正常顯示,目前還沒弄懂原因,可能還是對編碼知識瞭解不夠多,希望大神們能夠多多指教~
注:“gbk”收入21886個漢字和圖形符號;“gb2312”標準共收錄6763個漢字。