Python/bs4:div标签内的span - 文本提取

1 投票
1 回答
2531 浏览
提问于 2025-04-18 15:28

我在从一个div标签中提取文本时遇到了问题。问题是,在这个div标签里有一个没有开头标签的标签。所以当我这样做时:raw = soup.find('div', class_='inside').text,我只能得到标签之前的文本。

举个例子:

<div class='inside'><div>sth0</div><div>sth1</div></span><div>sth2<div></div>

soup.find('div', class_='inside').text

>>> sth0  sth1 

你有没有什么办法可以从div标签中获取完整的文本?谢谢。

补充说明(根据Tanmaya Meher的说法,上面的代码应该可以工作,但对我来说不行,所以我附上了具体的问题)。

当我运行这段代码时:

raw = firmHtml.find('div', class_='inside').text
print raw

我得到的是:

Katalóg   Obchody a veľkoobchod

而不是:

Katalóg   Obchody a veľkoobchod   Stavebniny   Izolačný materiál...

这是我代码的一部分。

<div class="inside"><div class="inside2"><a href="/katalog/" style="font-size:12px" title="Katalóg"><span>Katalóg</span></a> <span class="sipka s1">&nbsp;</span> <a href="/katalog/obchody-a-velkoobchod/" style="font-size:12px" itemprop="url" title="Obchody a veľkoobchod"><span itemprop="title" >Obchody a veľkoobchod</span></a></span> <span class="sipka s1">&nbsp;</span> <span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb" ><a href="/katalog/stavebniny_1/" style="font-size:12px" itemprop="url" title="Stavebniny"><span itemprop="title" >Stavebniny</span></a></span> <span class="sipka s1">&nbsp;</span> <span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb" ><a href="/katalog/izolacny-material/" style="font-size:12px" itemprop="url" title="Izolačný materiál"><span itemprop="title" >Izolačný materiál</span></a></span> <span class="sipka s1">&nbsp;</span> <span itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb" ><a href="/katalog/protipoziarne-izolacie/" style="font-size:12px" itemprop="url" title="Protipožiarne izolácie"><span itemprop="title" >Protipožiarne izolácie</span></a></span> <span class="sipka s1">&nbsp;</span> Ing. Milan Kalafut</div></div></div><div id="main"><div id="content"><div itemscope itemtype="http://schema.org/LocalBusiness" class="business-container"><div id="lavy"><div class="foto s3"><img src="http://s.aimg.sk/katalog/css/images/nologo.gif" alt="Logo nieje k dispozícii" /></div><div id="moznosti">

也许我没看到什么问题。

1 个回答

1
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup as BS

html_text = '<div class="inside"><div class="inside2"><a  href="/katalog/" style="font-size:12px"  title="Katalóg"><span>Katalóg</span></a> <span class="sipka s1">&nbsp;</span> <a  href="/katalog/obchody-a-velkoobchod/" style="font-size:12px"  itemprop="url"  title="Obchody a veľkoobchod"><span itemprop="title" >Obchody a veľkoobchod</span></a></span> <span class="sipka s1">&nbsp;</span> <span itemprop="child"  itemscope itemtype="http://data-vocabulary.org/Breadcrumb" ><a  href="/katalog/stavebniny_1/" style="font-size:12px"  itemprop="url"  title="Stavebniny"><span itemprop="title" >Stavebniny</span></a></span> <span class="sipka s1">&nbsp;</span> <span itemprop="child"  itemscope itemtype="http://data-vocabulary.org/Breadcrumb" ><a  href="/katalog/izolacny-material/" style="font-size:12px"  itemprop="url"  title="Izolačný materiál"><span itemprop="title" >Izolačný materiál</span></a></span> <span class="sipka s1">&nbsp;</span> <span itemprop="child"  itemscope itemtype="http://data-vocabulary.org/Breadcrumb" ><a  href="/katalog/protipoziarne-izolacie/" style="font-size:12px"  itemprop="url"  title="Protipožiarne izolácie"><span itemprop="title" >Protipožiarne izolácie</span></a></span> <span class="sipka s1">&nbsp;</span> Ing. Milan Kalafut</div></div></div><div id="main"><div id="content"><div  itemscope itemtype="http://schema.org/LocalBusiness"  class="business-container"><div id="lavy"><div class="foto s3"><img src="http://s.aimg.sk/katalog/css/images/nologo.gif" alt="Logo nieje k dispozícii" /></div><div id="moznosti">'

#html_text = open("a.html",'r').read() #I have commented this, you can do like this too; a.html file contains the same html code as above

firmHtml = BS(html_text)
raw = firmHtml.find('div', class_='inside').text

print (raw)
Katalóg   Obchody a veľkoobchod   Stavebniny   Izolačný materiál   Protipožiarne izolácie   Ing. Milan Kalafut

输出(在Linux上使用Python 2.7.5和Python 3.3.2时):

撰写回答