Web scraping:如何用BeautifulSoup提取目标span文本排除标题内容
问题原因
你当前使用find('span')仅能匹配到目标div下的第一个span节点,也就是包含Faith:的节点,自然无法拿到后续的目标文本。
解决方案
方法1:按节点顺序切片跳过首节点
适合页面结构固定、目标span始终排在除首节点外的场景:
faithdiv = soup.find('div', class_='spec-subcat attributes-religion') # 获取div下所有span节点,跳过第一个带Faith:的节点 faith_spans = faithdiv.find_all('span')[1:] # 提取所有目标文本存入列表 faith_list = [span.text.strip() for span in faith_spans]
最终faith_list的输出为['Christian', 'Islam'],如果需要拼接为字符串可以用','.join(faith_list)实现。
方法2:通过类名过滤排除无关节点
容错性更高,不受span排序变化影响:
faithdiv = soup.find('div', class_='spec-subcat attributes-religion') # 直接筛选div下所有不带h5类的span节点 faith_spans = faithdiv.select('span:not(.h5)') faith_list = [span.text.strip() for span in faith_spans]
内容的提问来源于stack exchange,提问作者Devindi Siwurathna
相关产品推荐
相关产品推荐

