You need to enable JavaScript to run this app. 如何用 BeautifulSoup 查找指定 class 的 div 并解决返回空列表问题
优惠活动
大模型
产品
解决方案
定价
更多

如何用 BeautifulSoup 查找指定 class 的 div 并解决返回空列表问题

空列表的原因
  • find_all 的第一个参数只接受标签名,原代码把div class="xxx"整段字符串作为标签名传入,库会查找名称完全等于这段字符串的标签,自然匹配不到结果。
  • 第二个参数误传入了BeautifulSoup实例本身,该位置本应接收属性筛选规则,传参逻辑不符合API要求。
  • 注意:class是Python保留关键字,BeautifulSoup筛选class属性需要使用专用参数class_,不能直接写class=。
正确实现

首先导入依赖:

from bs4 import BeautifulSoup

完整查询代码(推荐用with管理文件,自动处理开关闭):

with open('WarpipsPageText.txt', 'r') as f:
    page_text = f.read()

soup = BeautifulSoup(page_text, 'html5lib')
# 按标签名+class筛选目标元素
merchant_divs = soup.find_all('div', class_='topclick-list-element-game-merchant')
print(merchant_divs)

也可以通过属性字典传参,效果完全一致:

merchant_divs = soup.find_all('div', attrs={'class': 'topclick-list-element-game-merchant'})
转义文本的额外处理

你贴出的片段中标签显示为<div ..."这类HTML实体格式,分两种情况处理:

  • 如果只是提问粘贴时平台自动转义,txt文件本身存的是正常的<div>原生标签,直接用上面的基础写法即可。
  • 如果txt文件里实际存储的就是转义后的文本,BeautifulSoup会把这类内容识别为普通文本而非DOM标签,需要先做反转义再解析:
import html
from bs4 import BeautifulSoup

with open('WarpipsPageText.txt', 'r') as f:
    page_text = f.read()

# 将HTML实体转回原生标签格式
page_text = html.unescape(page_text)
soup = BeautifulSoup(page_text, 'html5lib')
merchant_divs = soup.find_all('div', class_='topclick-list-element-game-merchant')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 06:45:03