如何在BeautifulSoup中捕获内部文本以及内部标记

时间:2014-02-28 12:33:18

标签: python html beautifulsoup screen-scraping

我有一个我正在解析的文档,里面有div个标签的列表,但它有时也只是文本内联。我需要知道如何从中提取内容。

说我有以下内容:

<div>
<div>1</div>
<div>2</div>
3
<div>4</div>
</div>

我需要提取上面的所有文字,所以它读取1234。

我有以下代码获取所有div代码,但不会自行获取文字。

from ghost import Ghost
from BeautifulSoup import BeautifulSoup

def tagfilter(tag):
    return tag.name == 'div'

ghost = Ghost()
ghost.open("testpage.html")

page, resources = ghost.wait_for_page_loaded()

soup = BeautifulSoup(ghost.content)
maindiv = soup.find('div', {'id': 'parentdiv'})
outtext = ''
for s in maindiv.findAll(ipfilter):
    outtext + = s.text
print outtext 

1 个答案:

答案 0 :(得分:1)

如果您需要空格,请使用stripped_strings(或strings

In [16]: soup = BeautifulSoup('''<div>
<div>1</div>
<div>2</div>
3
<div>4</div>
</div>''')


In [19]: list(soup.stripped_strings)
Out[19]: [u'1', u'2', u'3', u'4']


In [20]: ''.join(soup.stripped_strings)
Out[20]: u'1234'

http://www.crummy.com/software/BeautifulSoup/bs4/doc/#strings-and-stripped-strings