2015-08-24 66 views
2

我想使用BeatifulSoup從網站獲取表格中的數據,但它無法正確抓住中文字符。 這是我的代碼:Python中BeautifulSoup的中文字符編碼錯誤?

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import urllib2 
from bs4 import BeautifulSoup 
html=urllib2.urlopen("http://www.515fa.com/che_1978.html").read() 
soup=BeautifulSoup(html,from_encoding="UTF-8") 
print soup.prettify() 

而且中國的字符顯示是這樣的:

<td align="center" bgcolor="#FFFFFF" u1:str="" width="173"> 
       ćé¸</td> 
<td align="center" bgcolor="#FFFFFF" u1:str="" width="149"> 
       ä¸ćľˇĺ¤§äź</td> 
<td align="center" bgcolor="#FFFFFF" u1:str="" width="126"> 
       大äź</td> 

我真的不知道「ä¸ćľĺ¤§äź」是什麼。我嘗試將編碼「utf-8」更改爲「gb18030」,但它不起作用。 我怎樣才能得到正確的漢字?謝謝!

+0

你在輸出這個HTML *到*?瀏覽器?控制檯? – deceze

+0

@desceze MacBook上的Terminal.app。 – Shawn

+0

終端輸出使用的編碼是什麼?你可能需要做一些像'print soup.prettify()。encode('gb18030')'之類的東西。 – Bakuriu

回答

2

嘗試:

html = urllib2.urlopen("http://www.515fa.com/che_1978.html") 
content = html.read().decode('utf-8', 'ignore') 
soup = BeautifulSoup(content) 

不知道究竟是什麼BeautifulSoup(from_encoding=)沒有,但這樣做有問題。

+0

是的!有用!非常感謝你!我一直在爲此工作4個小時! :-) – Shawn