使用 BeautifulSoup 解析未关闭的 `<br>` 标签
Posted
技术标签:
【中文标题】使用 BeautifulSoup 解析未关闭的 `<br>` 标签【英文标题】:Parsing unclosed `<br>` tags with BeautifulSoup 【发布时间】:2012-11-20 20:19:08 【问题描述】: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>]
有没有简单的方法可以得到我想要的结果?
【问题讨论】:
有没有办法克服的这种行为?它正在破坏兄弟结构。 【参考方案1】: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']
【讨论】:
不知道这个功能。很好的答案。 可能是因为我使用的是bs4
,但这不起作用。它会选择第一个项目 (one
),但不会选择其他项目。以上是关于使用 BeautifulSoup 解析未关闭的 `<br>` 标签的主要内容,如果未能解决你的问题,请参考以下文章