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

如何用BeautifulSoup精准抓取同层级同class的目标单个div?

如何用BeautifulSoup精准抓取同层级下指定的单个div元素

当页面中存在多个同层级、同class属性的div元素时,需要通过精准定位来抓取目标元素。以下针对你的示例场景,分析错误原因并给出修正方案:

错误代码分析

你当前的select方法使用方式有误:select的第一个参数是CSS选择器字符串,不需要额外传入字典参数。原写法导致返回了页面中所有div元素,因此输出出现大量None和无关内容。

修正方案

方法1:使用CSS伪类选择器直接定位

通过nth-of-type(3)选中第三个.parent元素,再定位其内部的目标div:

from bs4 import BeautifulSoup

htmld_doc = """
<div class="main">
  <div class="parent">
    <div class="css-1wi2w6s enb64yk4">1</div>
  </div>
  <div class="parent">
    <div class="css-1wi2w6s enb64yk4">2</div>
  </div>
  <div class="parent">
    <div class="css-1wi2w6s enb64yk4">3</div>
  </div>
  <div class="parent">
    <div class="css-1wi2w6s enb64yk4">4</div>
  </div>
</div>
"""

doc = BeautifulSoup(htmld_doc, 'html.parser')
# 精准定位第三个.parent下的目标div
target_div = doc.select_one('.main .parent:nth-of-type(3) .css-1wi2w6s.enb64yk4')
print(target_div.string)

方法2:先获取同层级元素列表,再通过索引选择

先抓取所有.parent元素,再通过索引(从0开始)选取第三个,最后查找其内部的目标div:

from bs4 import BeautifulSoup

htmld_doc = """
<div class="main">
  <div class="parent">
    <div class="css-1wi2w6s enb64yk4">1</div>
  </div>
  <div class="parent">
    <div class="css-1wi2w6s enb64yk4">2</div>
  </div>
  <div class="parent">
    <div class="css-1wi2w6s enb64yk4">3</div>
  </div>
  <div class="parent">
    <div class="css-1wi2w6s enb64yk4">4</div>
  </div>
</div>
"""

doc = BeautifulSoup(htmld_doc, 'html.parser')
# 获取所有.parent元素
parent_divs = doc.find_all('div', class_='parent')
# 选取第三个.parent(索引为2),再找内部目标div
target_div = parent_divs[2].find('div', class_='css-1wi2w6s enb64yk4')
print(target_div.string)

两种方法的输出结果均为:

3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:13:06