问题:使用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
解析器。
答案 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>
lxml
和html5lib
将尝试创建格式正确的文档,这就是您看到html和body标签的原因。
详细了解解析器here。
HTML解析器之间也存在差异。如果你给Beautiful Soup一个完美形成的HTML文档,这些差异并不重要。一个解析器会比另一个解析器更快,但它们都会为您提供一个看起来与原始HTML文档完全相同的数据结构。