如何在结尾和之间获取文本值

时间:2012-09-19 14:41:48

标签: python text screen-scraping beautifulsoup

我正在尝试使用python和beautiuflsoup进行屏幕抓取。我遇到一个问题是我不知道如何在<br/>

之前获取文本值

以下是一个例子:

<h3>
    Francois  Abboud
</h3>
Professor,&nbsp;
Internal Medicine
<br />
<br />

2 个答案:

答案 0 :(得分:1)

我认为你可以使用.next_sibling

>>> from bs4 import BeautifulSoup
>>> 
>>> html = """
... <h3>
...     Francois  Abboud
... </h3>
... Professor,&nbsp;
... Internal Medicine
... <br />
... <br />
... """
>>> 
>>> soup = BeautifulSoup(html)
>>> 
>>> for h3 in soup.findAll("h3"):
...     print 'h3:'
...     print repr(h3)
...     print 'next sibling:'
...     print repr(h3.next_sibling)
... 
h3:
<h3>
    Francois  Abboud
</h3>
next sibling:
u'\nProfessor,\xa0\nInternal Medicine\n'

我应该说两分钟前我不知道怎么做,但我知道findAll。所以我得到了一个h3对象,我使用了IPython的标签完成来查看其中的内容,它有h3.next_elementh3.next_sibling之类的东西,我尝试了它们直到一个有效。< / p>

答案 1 :(得分:0)

tsup,如果你将html分配给字符串值,如下所示:

html = 'your html here'

然后你可以对它进行拆分,字符串将被拆分成一个字符串值数组,在你指定的分隔符的两边都有字符串:

def extractmyCrap(html):
   h3splitStrings = html.split('</h3>')
   h3splitStrings = h3splitStrings[1]
   extractedText = h3splitStrings.split('<br/>')
   return extractedText[0]

如果您需要任何其他帮助,或者我理解您的问题不正确,请发表评论