首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否要使BeatifulSoup 4正确识别html 4未标记的自结束标记?

是否要使BeatifulSoup 4正确识别html 4未标记的自结束标记?
EN

Stack Overflow用户
提问于 2015-07-03 08:58:34
回答 1查看 126关注 0票数 2

当有一个输入标签没有标记为自封闭的时候(我认为这在HTML 4中是有效的),漂亮的汤4就不能正确识别它了。

例如:

代码语言:javascript
复制
>>> s=BeautifulSoup("<p><input type='hidden' value='abc'><br></p>")
>>> s.find('input')
<input type="hidden" value="abc"><br/></input>

所以我想知道是否有办法解决这个问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-03 12:14:51

我不确定是否使用BeautifulSoup,但是如果使用lxml是一个选项(我确实推荐),它可以正确地解析input。此外,还可以设置method='xml'来呈现自关闭节点。所以在你的例子中,它将是:

代码语言:javascript
复制
In [8]: import lxml

In [9]: tree = lxml.html.fromstring("<p><input type='hidden' value='abc'><br></p>")

In [10]: lxml.html.tostring(tree)
Out[10]: '<p><input type="hidden" value="abc"><br></p>'

In [11]: lxml.html.tostring(tree.find('input'), method='xml')
Out[11]: '<input type="hidden" value="abc"/>'

请参阅上文,因为lxml解析器不使用regex解析节点,因此可以更准确地捕获input节点。

通过设置method='xml',您可以以自关闭的方式呈现该节点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31202654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档