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

BeautifulSoup爬取无数据返回:为何无法找到目标元素?

问题原因及解决方法

核心错误

你代码里的soup.findAll('item')是在查找名为<item>的HTML标签,但目标元素都是<div>标签,item只是它们的class属性值,不是标签名,所以找不到任何元素。

正确的查找方式

根据你的需求,分场景给出对应写法:

1. 只找class严格为item的div元素(对应前两个元素)

# 方法1:使用class_参数(class是Python关键字,需加下划线)
result = soup.find_all('div', class_='item')

# 方法2:使用CSS选择器
result = soup.select('div.item')

2. 找所有class包含item的div元素(包括item和item-alt,对应三个元素)

# 方法1:用正则匹配class属性
import re
result = soup.find_all('div', class_=re.compile(r'item'))

# 方法2:用CSS选择器的包含匹配
result = soup.select('div[class*="item"]')

3. 先定位容器再查找元素

如果目标元素都在class为section的div容器内,也可以先锁定容器再查找内部元素:

section = soup.find('div', class_='section')
result = section.find_all('div')

额外提示

  • findAll是BeautifulSoup的旧版方法,官方推荐使用find_all。
  • 如果页面是JavaScript动态渲染的内容,urllib.request.urlopen只能获取静态HTML,这时候需要用selenium或playwright这类工具加载动态内容后再解析,但你确认页面上存在这些元素,先按上述静态解析方法调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:40:32