当有一个输入标签没有标记为自封闭的时候(我认为这在HTML 4中是有效的),漂亮的汤4就不能正确识别它了。
例如:
>>> s=BeautifulSoup("<p><input type='hidden' value='abc'><br></p>")
>>> s.find('input')
<input type="hidden" value="abc"><br/></input>所以我想知道是否有办法解决这个问题
发布于 2015-07-03 12:14:51
我不确定是否使用BeautifulSoup,但是如果使用lxml是一个选项(我确实推荐),它可以正确地解析input。此外,还可以设置method='xml'来呈现自关闭节点。所以在你的例子中,它将是:
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',您可以以自关闭的方式呈现该节点。
https://stackoverflow.com/questions/31202654
复制相似问题