You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup解析网站时解码非拉丁字符的问题

解决西里尔字母乱码问题

抓取目标网站表格时,得到的DataFrame及HTML源码中出现делий、бÑÐ这类乱码,无法正常显示西里尔字母,解决方法如下:

问题原因

网站响应内容采用Windows-1251编码,但requests库自动识别为UTF-8,导致解码错误,出现乱码。

修改后的代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'http://www.bvbf.ru/food_paper.html'

page = requests.get(url)
# 手动指定正确的编码为Windows-1251
page.encoding = 'Windows-1251'
soup = BeautifulSoup(page.text, 'lxml')
table1 = soup.find('table', id='table1')

headers = [th.text for th in table1.find_all('th')]
mydata = pd.DataFrame(columns=headers)

for row in table1.find_all('tr')[1:]:
    row_data = [td.text for td in row.find_all('td')]
    # 用pd.concat替代已弃用的append方法
    mydata = pd.concat(
        [mydata, pd.Series(row_data, index=mydata.columns[:len(row_data)]).to_frame().T],
        ignore_index=True
    )

说明

  1. 核心修复:通过page.encoding = 'Windows-1251'强制指定编码,让requests用正确的编码解析响应内容,即可正常显示西里尔字母。
  2. 代码优化:简化了原代码的循环逻辑,同时替换了Pandas已弃用的append方法,改用pd.concat保证代码兼容性。

内容的提问来源于stack exchange,提问作者Levdar Armenia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:53:13