2011-05-11 18 views
3

我嘗試使用beautifulsoup解析HTML文檔,但是我在麻煩中運行。用windows-1252編碼打開HTML文檔的最佳方法是什麼?如何使用windows-1252編碼在beautifulsoup中打開一個HTML頁面

我試圖用iconv轉換爲utf-8,但這也行不通。

doc = open("e.html").read() 

soup = BeautifulSoup(doc) 

soup.findAll('p') 

UnicodeEncodeError: 'ASCII' 編解碼器無法編碼的字符U '\ XFC' 在位置103:當我打開它沒有我的iconv得到同樣的錯誤序數不在範圍內(128)

完全回溯:

>>> soup.findAll('p') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 103: ordinal not in range(128) 
+0

我想知道'fromEncoding'參數可能是什麼... – 2011-05-11 08:05:20

+0

沒有什麼區別'湯= BeautifulSoup(doc,fromEncoding =「windows-1252」)'同樣的結果'湯= BeautifulSoup(doc,fromEncoding = 「utf-8」)' – maruusos82 2011-05-11 08:55:52

+0

那麼完整的回溯是什麼呢? – 2011-05-11 09:06:11

回答

0

嘗試是這樣的:

doc = open("e.html").read() 

doc = doc.decode('cp1252') 

soup = BeautifulSoup(doc) 

soup.findAll('p') 
+0

同樣的錯誤:( – maruusos82 2011-05-11 09:14:42

+1

@ berndmeiers82嗯......嘗試將'soup.findAll('p')'改成像'result = soup.findAll('p')之類的東西'我假設你從這個錯誤中得到這個錯誤' soup.findAll('p')'產生一個輸出到控制檯,不能用'ascii'編解碼器編碼 – Vader 2011-05-11 09:35:41

0

我得到類似的錯誤:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 723617: invalid continuation byte

什麼工作對我來說是指定輸入編碼像這樣:

page = open("page.html", encoding="windows-1252") 

soup = BeautifulSoup(page.read(), "html.parser") 
相關問題