BS4 class 带有 header 个标签
BS4 class with header tags
我如何解析 class 以仅获取列表中 header 标签之外的文本,或两者都在列表中?
<div class="footballMatchSummaryDef"><h1>Burnley v Aston Villa</h1>English Premier League at Turf Moor</div>
我考虑过使用正则表达式来提取,但认为漂亮的汤肯定无法处理它
有很多解决方案,一种是获取整个文本,然后根据一些分隔符将其拆分:
from bs4 import BeautifulSoup
txt = '''<div class="footballMatchSummaryDef"><h1>Burnley v Aston Villa</h1>English Premier League at Turf Moor</div>'''
soup = BeautifulSoup(txt, 'html.parser')
lst = soup.select_one('.footballMatchSummaryDef').get_text(separator='|').split('|')
print(lst)
打印:
['Burnley v Aston Villa', 'English Premier League at Turf Moor']
或使用bs4
导航功能:
print( soup.h1.text )
print( soup.h1.find_next_sibling(text=True) )
打印:
Burnley v Aston Villa
English Premier League at Turf Moor
感谢 Andrej,导航功能正是我所追求的,工作正常,才刚刚开始 python 所以对我来说都是 php 的新功能。这是我需要的下一个兄弟姐妹
print( soup.h1.find_next_sibling(text=True) )
我如何解析 class 以仅获取列表中 header 标签之外的文本,或两者都在列表中?
<div class="footballMatchSummaryDef"><h1>Burnley v Aston Villa</h1>English Premier League at Turf Moor</div>
我考虑过使用正则表达式来提取,但认为漂亮的汤肯定无法处理它
有很多解决方案,一种是获取整个文本,然后根据一些分隔符将其拆分:
from bs4 import BeautifulSoup
txt = '''<div class="footballMatchSummaryDef"><h1>Burnley v Aston Villa</h1>English Premier League at Turf Moor</div>'''
soup = BeautifulSoup(txt, 'html.parser')
lst = soup.select_one('.footballMatchSummaryDef').get_text(separator='|').split('|')
print(lst)
打印:
['Burnley v Aston Villa', 'English Premier League at Turf Moor']
或使用bs4
导航功能:
print( soup.h1.text )
print( soup.h1.find_next_sibling(text=True) )
打印:
Burnley v Aston Villa
English Premier League at Turf Moor
感谢 Andrej,导航功能正是我所追求的,工作正常,才刚刚开始 python 所以对我来说都是 php 的新功能。这是我需要的下一个兄弟姐妹
print( soup.h1.find_next_sibling(text=True) )