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

BeautifulSoup/Requests抓取网页部分title乱码缺失问题求助

解决网页抓取中的乱码问题

问题原因

你手动设置了req.encoding = 'cp1251',但该编码与网页实际返回的内容编码不匹配,导致解析部分a标签的title属性时出现乱码。另外,直接使用req.text可能会因为编码转换错误丢失原始字节信息。

解决方案

修改编码处理逻辑,让requests和BeautifulSoup自动处理编码,同时指定更可靠的HTML解析器:

import pandas as pd
import requests
from bs4 import BeautifulSoup
import time

headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36'
}

req = requests.get('https://stroit-kompanii.ru', headers=headers)
time.sleep(3)
# 使用原始字节流让BeautifulSoup自动检测编码,指定lxml解析器
soup = BeautifulSoup(req.content, 'lxml')

all_cat_list = soup.find_all('div', {'class': 'all_cat_list'})
# 遍历提取a标签的信息,避免直接打印整个div的HTML
for div in all_cat_list:
    links = div.find_all('a')
    for a in links:
        print(f"标题: {a.get_text(strip=True)}, 链接: {a['href']}, Title属性: {a.get('title', '无')}")

关键改动说明

  • 移除手动设置的req.encoding = 'cp1251',让requests根据响应头自动推断编码。
  • 使用req.content(原始字节流)代替req.text传递给BeautifulSoup,避免编码转换错误。
  • 指定lxml作为HTML解析器,解析效率和兼容性优于默认的html.parser。
  • 遍历提取每个a标签的文本、链接和title属性,输出更清晰的结构化信息,而非直接打印原始HTML。

内容的提问来源于stack exchange,提问作者Евгений Еремеев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:18:19