首页 > 解决方案 > BS4 getText 函数产生意外输出

问题描述

以下 html 示例会根据文本样式格式产生不同的结果 这是一行时的示例

card = """
<ul class="wrapper--inline-block float--left margin-top--15 padding-left--20 font--weight-300"><li><span class="font--weight-500">Minimum Qualification:</span> Bachelor</li><li><span class="font--weight-500">Experience Level:</span> Graduate trainee</li><li><span class="font--weight-500">Experience Length:</span> 1 year</li></ul>
"""

输出:

Minimum Qualification: BachelorExperience Level: Graduate traineeExperience Length: 1 year

并且当 html 样本被格式化时

card = """
<ul class="wrapper--inline-block float--left margin-top--15 padding-left--20 font--weight-300">
<li><span class="font--weight-500">Minimum Qualification:</span> Bachelor</li>
<li><span class="font--weight-500">Experience Level:</span> Graduate trainee</li>
<li><span class="font--weight-500">Experience Length:</span> 1 year</li>
</ul>
"""

输出

Minimum Qualification: Bachelor
Experience Level: Graduate trainee
Experience Length: 1 year

问题是,如何使第一种情况像第二种情况一样产生所需的输出。这是我当前的代码

qualifications=  BeautifulSoup(card, "html.parser")
print(qualifications.getText())

标签: pythonbeautifulsoup

解决方案


用于separator="\n"获得所需的输出,

qualifications.getText(separator="\n")

编辑-1:

>>> card = """
<ul class="wrapper--inline-block float--left margin-top--15 padding-left--20 font--weight-300"><li><span class="font--weight-500">Minimum Qualification:</span> Bachelor</li><li><span class="font--weight-500">Experience Level:</span> Graduate trainee</li><li><span class="font--weight-500">Experience Length:</span> 1 year</li></ul>
"""

>>> qualifications=  BeautifulSoup(card, "html.parser")

>>> for li in qualifications.find_all('li'):
     print(li.get_text()) 
Minimum Qualification: Bachelor
Experience Level: Graduate trainee
Experience Length: 1 year

推荐阅读