Python爬取中文頁面的時候出現的亂碼問題


一、讀取返回的頁面數據

在瀏覽器打開的時候查看源代碼,如果在頭部信息中指定了UTF-8

那么再python代碼中讀取頁面信息的時候,就需要指定讀取的編碼方式:

response.read().decode('utf-8')

 

二、把中文數據寫入到文件的時候

python默認的是按照ACSII的編碼往外寫,所以中文數據往外寫肯定會出現亂碼

那么再往外寫入文件的時候需要對中文數據進行編碼:

fout.write('<td>%s</td>' %(data['title'].encode('utf-8')))

 

三、寫入到HTML文件的時候

為了顯示方便,把抓取下來的數據寫入到HTML文件里面,在瀏覽中顯示

在寫入的時候,需要指定HTML文件的編碼方式

如果沒有指定默認的是UTF8無BOM編碼,直接用瀏覽打開會產生亂碼

所以需要在往外寫的時候指定編碼方式:

fout.write('<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/></head>')

 

四、設置了以上編碼之后還可能會報錯,在加入以下代碼

import sys
reload(sys)
sys.setdefaultencoding("utf-8")


免責聲明!

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



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