5

BeautifulSoup 具有关闭连续<br>标签的逻辑,这些标签并不能完全满足我的要求。例如,

>>> from bs4 import BeautifulSoup
>>> bs = BeautifulSoup('one<br>two<br>three<br>four')

HTML 将呈现为

one
two
three
four

我想把它解析成一个字符串列表,['one','two','three','four']. BeautifulSoup 的标签关闭逻辑意味着当我请求所有<br>元素时,我会得到嵌套标签。

>>> bs('br')
[<br>two<br>three<br>four</br></br></br>,
 <br>three<br>four</br></br>,
 <br>four</br>]

有没有一种简单的方法可以得到我想要的结果?

4

1 回答 1

11
import bs4 as bs
soup = bs.BeautifulSoup('one<br>two<br>three<br>four')
print(soup.find_all(text=True))

产量

[u'one', u'two', u'three', u'four']

或者,使用lxml

import lxml.html as LH
doc = LH.fromstring('one<br>two<br>three<br>four')
print(list(doc.itertext()))

产量

['one', 'two', 'three', 'four']
于 2012-11-20T20:27:04.197 回答