如何用Beautiful Soup提取多个指定class标签内的文本?
提取所有
<p class="fontsize--h3">标签内的文本 嗨,咱们来解决这个问题~看你的代码和返回的ResultSet结果,要提取每个div里目标p标签的文本其实很简单,直接遍历这个结果集,在每个div里定位到对应的p标签就行。这里有两种实用的实现方式:
方式一:普通循环(可读性更强)
# 遍历boal_data里的每个div元素 for div_item in boal_data: # 在当前div中找到class为fontsize--h3的p标签 target_paragraph = div_item.find('p', class_='fontsize--h3') # 提取文本(加个判断避免找不到标签时报错) if target_paragraph: # strip=True可以移除文本前后的空格、换行符,让结果更整洁 print(target_paragraph.get_text(strip=True))
方式二:列表推导式(代码更简洁)
如果想把所有文本一次性收集到一个列表里,用列表推导式一步搞定:
# 生成包含所有目标文本的列表 extracted_texts = [ item.find('p', class_='fontsize--h3').get_text(strip=True) for item in boal_data # 确保每个div里确实存在目标p标签,避免报错 if item.find('p', class_='fontsize--h3') ] # 打印结果 print(extracted_texts)
运行后你会得到干净的结果:
['Apr 2018', 'Netherlands', '€156m', '370']
小提示
strip=True是可选参数,但加上它能去掉文本前后多余的空白字符(比如换行、空格),让输出更整洁;- 加入
if判断是为了避免某个div里没有目标p标签时抛出AttributeError,让代码更健壮。
内容的提问来源于stack exchange,提问作者Luke Simpson
相关产品推荐
相关产品推荐

