【问题标题】:Python/bs4: Span inside div tag - text extractionPython / bs4:div标签内的跨度 - 文本提取
【发布时间】:2014-09-23 03:48:12
【问题描述】:

我正在从 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...

这是我的代码的一部分。

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

也许我看不到什么。

【问题讨论】:

  • 我在 python 2.7 和 python 3.3 中都完成了sth0sth1sth2 !!
  • @TanmayaMeher 感谢您的回答。我现在已将问题的主要部分附加到我的问题中。
  • 现在这可能是解析器的问题。检查此crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser 并尝试使用不同的解析器。

标签: python html tags beautifulsoup


【解决方案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)

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2023-04-01
    • 2021-06-24
    相关资源
    最近更新 更多