2 回答

TA貢獻1813條經驗 獲得超2個贊
使用open('AH.html')
使用默認編碼對文件進行解碼,該默認編碼可能不是文件的編碼。 BeautifulSoup
理解 HTML 標頭,特別是以下內容表明該文件是 UTF-8 編碼的:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
以二進制模式打開文件并BeautifulSoup
計算出來:
with open("AH.html","rb") as f: soup = BeautifulSoup(f, 'html.parser')
有時,網站設置的編碼不正確。在這種情況下,如果您知道編碼應該是什么,您可以自己指定編碼。
with open("AH.html",encoding='utf8') as f: soup = BeautifulSoup(f, 'html.parser')

TA貢獻1772條經驗 獲得超6個贊
from bs4 import BeautifulSoup
with open("AH.html") as f:
soup = BeautifulSoup(f, 'html.parser')
tb = soup.find("table")
for item in tb.find_all("tr")[55]:
print(item.text)
我不得不說,您的第一個代碼實際上很好并且應該可以工作。
關于第二個代碼,您正在嘗試decode
str
哪個是錯誤的。因為decode
函數是為byte
object
.
我相信您正在使用Windows
它的默認編碼不是cp1252
的地方UTF-8
。
您能否運行以下代碼:
import sys print(sys.getdefaultencoding()) print(sys.stdin.encoding) print(sys.stdout.encoding) print(sys.stderr.encoding)
并檢查你的輸出是否是UTF-8
或cp1252
。
請注意,如果您使用
VSCode
withCode-Runner
,請在終端中運行您的代碼py code.py
解決方案(來自聊天)
(1) 如果您使用的是 Windows 10
打開控制面板并通過小圖標更改視圖
單擊區域
單擊管理選項卡
單擊更改系統區域設置...
勾選“Beta:使用 Unicode UTF-8...”框
單擊“確定”并重新啟動您的電腦
(2)如果你不是Windows 10或者只是不想改變之前的設置,那么在第一段代碼中改為open("AH.html")
,open("AH.html", encoding="UTF-8")
即寫:
from bs4 import BeautifulSoup
with open("AH.html", encoding="UTF-8") as f:
soup = BeautifulSoup(f, 'html.parser')
tb = soup.find("table")
for item in tb.find_all("tr")[55]:
print(item.text)
- 2 回答
- 0 關注
- 166 瀏覽
添加回答
舉報