[英]Extracting certain text in python BS4?
我正在嘗試在 BS4 中提取某些文本。 下面的示例 HTML。
</tr><tr id="_Gonzaga" class="seedrow"> <td title="Click to show/hide ranks" class='lowrowclick' style="text-align:center;font-size:8px">2</td> <td id='Gonzaga' class="teamname"><a href="team.php?team=Gonzaga&year=2019" style="text-decoration: none;">Gonzaga<span class="lowrow" style="font-size:10px"><br/> 1 seed, <span style='background-color:#BAE2C6'>Elite Eight</span></span></a></td>
當前代碼是:
data = soup.findAll('tr', attrs={"class": "seedrow"})
team_name = item.find('td', class_ = 'teamname')
team_id = team_name.find('a').contents[0]
seed = team_name.find('span').text
print(team_id, seed)
這將返回:
Gonzaga, '\xa0\xa0\xa01 seed, Elite Eight'
我想要的是:
Gonzaga, 1 seed, Elite Eight
如果我理解正確,您想提取 3 個分隔的字符串。 您可以將.get_text()
與自定義separator=
字符一起使用,然后在此字符上拆分:
from bs4 import BeautifulSoup
txt = '''
<tr id="_Gonzaga" class="seedrow">
<td title="Click to show/hide ranks" class='lowrowclick' style="text-align:center;font-size:8px">2</td>
<td id='Gonzaga' class="teamname"><a href="team.php?team=Gonzaga&year=2019" style="text-decoration: none;">Gonzaga<span class="lowrow" style="font-size:10px"><br/> 1 seed, <span style='background-color:#BAE2C6'>Elite Eight</span></span></a></td>
</tr>'''
soup = BeautifulSoup(txt, 'html.parser')
data = soup.findAll('tr', attrs={"class": "seedrow"})
for item in data:
team_name = item.find('td', class_ = 'teamname')
a, b, c = team_name.get_text(strip=True, separator='|').split('|')
print(a)
print(b.strip(','))
print(c)
印刷:
Gonzaga
1 seed
Elite Eight
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.