2012-11-20 46 views
0

我正在使用Python2.6,並且有大量的請求模塊和字符編碼問題。保存html文件時出現Unicode錯誤

煮到最簡單的形式,這是我的代碼和所產生的誤差(包括實際網站造成我的問題):

import requests 

sites = ['www.ddelectricmotors.com', 'www.stearnswood.com'] 
for domain in site: 
r = requests.get('http://' + domain) 
f = open(domain, 'w') 
f.write(r.text) 
f.close() 

爲DDElectric汽車加載網頁並保存很好,但Stearnswood企圖將產生以下錯誤:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 13186: ordinal not in range(128) 

理想情況下,我寧願只是強制編碼爲ASCII,因爲我加載到scikit學習,這似乎更喜歡ASCII。我只需刪除未知字符即可。

回答

2

的Unix文件包含字節,你r對象的text屬性似乎是一個碼點串,所以如果你的系統是Unix,你可以改爲f.write(r.text.encode('UTF-8'))

更大的問題是,將來自因特網的未經數據處理的數據(通過不安全的通道獲取)寫入自動化過程中的文件中。要非常小心如何使用該文件。如果您信任該網站,請至少考慮使用HTTPS。