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>]
有没有一种简单的方法可以得到我想要的结果?
答案 0 :(得分:9)
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']