BeautifulSoup html.parser不理解img标签

时间:2017-03-08 08:46:41

标签: html image beautifulsoup

问题:使用BeautifulSoup时,img无法将'html.parser'标记理解为自行关闭

from bs4 import BeautifulSoup
BeautifulSoup('<img src="" alt="" title="" class=""><span>kjrn</span>', 'html.parser')

给了我

<img alt="" class="" src="" title=""><span>kjrn</span></img>

但我希望结果是

<img alt="" class="" src="" title=""/><span>kjrn</span>

我无法使用xml解析器。

1 个答案:

答案 0 :(得分:2)

改为使用lxml

soup = BeautifulSoup('<img src="" alt="" title="" class=""><span>kjrn</span>', 'lxml')

输出:

<html><body><img alt="" class="" src="" title=""/><span>kjrn</span></body></html>

lxmlhtml5lib将尝试创建格式正确的文档,这就是您看到html和body标签的原因。

详细了解解析器here

  

HTML解析器之间也存在差异。如果你给Beautiful Soup一个完美形成的HTML文档,这些差异并不重要。一个解析器会比另一个解析器更快,但它们都会为您提供一个看起来与原始HTML文档完全相同的数据结构。