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

如何使用BeautifulSoup获取带特定自定义属性的元素

解决BeautifulSoup筛选自定义data-component属性的问题

要定位带有data-component="text-block"属性的div并提取其中的p标签内容,BeautifulSoup提供了两种直接的实现方式:

方法1:使用属性字典匹配

直接在find_all中传入属性字典,精准定位目标div,再遍历提取内部p标签文本:

修改你的get_body方法如下:

def get_body(self) -> list:
    # 找到所有带有data-component="text-block"的div元素
    text_blocks = self.soup.find_all("div", {"data-component": "text-block"})
    paragraphs = []
    # 遍历每个目标div,提取其中符合class要求的p标签文本
    for block in text_blocks:
        paragraphs.extend([p.text.strip() for p in block.find_all("p", class_="ssrcss-1q0x1qg-Paragraph eq5iqo00")])
    return paragraphs

方法2:使用CSS选择器

利用CSS属性选择器语法,直接定位目标div下的指定p标签,写法更简洁:

修改后的get_body方法:

def get_body(self) -> list:
    # CSS选择器语法:定位所有data-component为text-block的div下的指定class的p标签
    target_p_tags = self.soup.select('div[data-component="text-block"] p.ssrcss-1q0x1qg-Paragraph.eq5iqo00')
    # 提取每个p标签的文本并去除首尾空白
    return [p.text.strip() for p in target_p_tags]

两种方法都能实现你的需求,CSS选择器更适合复杂的嵌套选择场景,属性字典则更直观易懂。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 11:15:37