如何使用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
相关产品推荐
相关产品推荐

