我正在使用 BeautifulSoup 从 HTML 文件中提取数据。我想获取两个标签之间的所有信息。这意味着如果我有一个像这样的 HTML 部分:
<h1></h1>
Text <i>here</i> has no tag
<div>This is in a div</div>
<h1></h1>
然后,如果我想要第一个 h1 和第二个 h1 之间的所有信息,输出将如下所示:
Text <i>here</i> has no tag
<div>This is in a div</div>
我尝试过 nextsibling 循环,但似乎总是有一个问题。 beautifulsoup 中是否有一个命令可以简单地提取元素“A”和元素“B”之间的所有内容(文本、换行符、div、特殊字符)?
一种解决方案是.extract()
第一个前面的所有内容<h1>
第二次之后<h1>
tag:
from bs4 import BeautifulSoup
html_doc = '''
This I <b>don't</b> want
<h1></h1>
Text <i>here</i> has no tag
<div>This is in a div</div>
<h1></h1>
This I <b>don't</b> want too
'''
soup = BeautifulSoup(html_doc, 'html.parser')
for c in list(soup.contents):
if c is soup.h1 or c.find_previous('h1') is soup.h1:
continue
c.extract()
for h1 in soup.select('h1'):
h1.extract()
print(soup)
Prints:
Text <i>here</i> has no tag
<div>This is in a div</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)