使用BeautifulSoup / Python从HTML文件中提取文本

时间:2019-06-20 17:50:22

标签: python html beautifulsoup

我正在尝试从html文件中提取文本。 html文件如下所示:

<li class="toclevel-1 tocsection-1">
    <a href="#Baden-Württemberg"><span class="tocnumber">1</span>
        <span class="toctext">Baden-Württemberg</span>
    </a>
</li>
<li class="toclevel-1 tocsection-2">
    <a href="#Bayern">
        <span class="tocnumber">2</span>
        <span class="toctext">Bayern</span>
    </a>
</li>
<li class="toclevel-1 tocsection-3">
    <a href="#Berlin">
        <span class="tocnumber">3</span>
        <span class="toctext">Berlin</span>
    </a>
</li>

我想从最后一个span标签中提取最后一个文本。 在第一行中,class="toctext"之后是“Baden-Würtemberg”,然后将其放入python列表。

在Python中,我尝试了以下操作:

names = soup.find_all("span",{"class":"toctext"})

我的输出是这个list

[<span class="toctext">Baden-Württemberg</span>, <span class="toctext">Bayern</span>, <span class="toctext">Berlin</span>]

那我怎么只提取标签之间的文本呢?

感谢所有人

2 个答案:

答案 0 :(得分:2)

find_all方法返回一个列表。遍历列表以获取文本。

for name in names:
    print(name.text)

返回:

Baden-Württemberg
Bayern
Berlin

内置的python dir()type()方法总是很方便地检查对象。

print(dir(names))

[...,
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'append',
 'clear',
 'copy',
 'count',
 'extend',
 'index',
 'insert',
 'pop',
 'remove',
 'reverse',
 'sort',
 'source']

答案 1 :(得分:0)

有了理解列表,您可以执行以下操作:

names = soup.find_all("span",{"class":"toctext"})
print([x.text for x in names])