我正在尝试从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>]
那我怎么只提取标签之间的文本呢?
感谢所有人
答案 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])