我有一個Python腳本,使用美麗的湯從目錄中的HTML文件中提取文本。但是,我無法使編碼正常工作。起初,我認爲HTML文件本身可能存在問題。然而,當我查看Notepad.exe的一個HTML文件的來源,我比如看到這一點:Vi er her for deg, og du må gjerne ta kontakt med oss på 815 32 000 eller på Facebook om du har noen spørsmål.
使用美麗的湯從HTML文件中提取挪威文,丟失挪威字符
然而,當我在Internet Explorer查看相同的HTML文件,我看到:Vi er her for deg, og du mÃ¥ gjerne ta kontakt med oss pÃ¥ 815 32 000 eller pÃ¥ Facebook om du har noen spørsmÃ¥l.
而且,Internet Explorer文本與我的Python腳本附加到我的文本文件中的文本相同。所以,顯然編碼是可檢測的,IE不理解它,但我似乎無法弄清楚爲什麼Python無法處理它。編碼應該是拉丁-1,我認爲這不會是一個問題。下面的代碼我有:
import os
import glob
from bs4 import BeautifulSoup
path = "c:\\users\\me\\downloads\\"
for infile in glob.glob(os.path.join(path, "*.html")):
markup = (infile)
soup = BeautifulSoup(open(markup, "r").read())
with open("example.txt", "a") as myfile:
myfile.write(soup.get_text())
myfile.close()
存在作爲,似乎打破了編碼,我想我可以通過Latin-1編碼,就像這樣:
soup = BeautifulSoup(open(markup, "r").read())
soup = soup.prettify("latin-1")
但是,這給我的錯誤:
Traceback (most recent call last):
File "bsoup.py", line 12, in <module>
myfile.write(soup.get_text())
AttributeError: 'bytes' object has no attribute 'get_text'
啊,有了這個選項,雖然,HTML被保存在輸出文件中。我認爲調用get_text()是獲取文本的方法? – 2013-04-26 21:51:34
@ZacBrown:已更新。 – 2013-04-26 21:58:23
謝謝@Martijn。我不確定什麼是錯誤的,但我改變了我的代碼,就像你的第二個例子,我的example.txt文件仍然顯示不正確的字符。如果有幫助,我使用美國個人電腦在Windows 7上。 – 2013-04-26 22:07:44