这可能是一个基本问题,但我无法弄清楚 . 还在学习如何使用beautifulsoup .
我正在尝试解析看起来像的HTML
<dl class="">
<div>
<ol>
<li><label>Tournament Name</label>TCG Saturday</li>
<li><label id="tournament_id" data-tournament-id="000002">Tournament ID</label>000002</li>
<li><label>Category</label>TCG: Unlimited</li>
<li><label>Registration</label>12:15PM to 1:15PM</li>
<li><label>Status</label>Complete</li>
</ol>
</div>
</dl>
这样只读取li标签并忽略label标签 . 也就是说,结果文本将是
TCG Saturday
000002
TCG: Unlimited
12:15PM to 1:15PM
Complete
我试过了
soup = BeautifulSoup(html)
for lis in soup.find_all('li'):
print(lis.text)
但这也会导致读取标签标签的文本并将它们组合在一起 . 它还会在网页上读取一堆其他文本并将其打印出来 .
Tournament NameTCG Saturday
Tournament ID000002
CategoryTCG: Unlimited
Registration12:15PM to 1:15PM
StatusComplete
我也可以使用标签
soup = BeautifulSoup(html)
for lis in soup.find_all('label'):
print(lis.text)
但之后没有文字(这是可以理解的) .
我不明白如何解析这个HTML,以便我可以得到
1)只是li标签中的文本,不包括label标签中的文本(如上面预期的那样)或
2)特定标签的li标签中的文本(例如,指定“锦标赛ID”标签并返回“000002”) .
1 回答
来自BeautifulSoup's文档:
decompose()
从树中删除标记,然后完全销毁它及其内容:码:
输出: