BeautifulSoup -- 防止标签自动闭合
BeautifulSoup在解析以下代码时遇到了问题:
>>> soup = BeautifulSoup('<img src="#" alt="Click Here >" border="0" />')
>>> soup.prettify()
'<img src="#" alt="Click Here >" />\n" border="0" />\n'
我还想说明一下,我无法控制输入的HTML。里面有很多不同的文本和属性,所以我想避免使用正则表达式。
有没有人能建议我怎么让BeautifulSoup在遇到">"符号时,不自动关闭img标签?
编辑 1:我在文档中找到了这个。我能控制BeautifulSoup如何解析IMG标签吗?
编辑 2:我解决了我的问题。在调用BeautifulSoup之前,我做了一次文本替换。
text.replace('>"','>"')
1 个回答
0
BeautifulSoup4 这个库已经更新,现在它能更聪明地处理一些情况,解决了之前的问题。如果你把 BeautifulSoup4 更新到最新版本,它会在引号里面忽略 >
这个标签。
soup = BeautifulSoup('<img src="#" alt="Click Here >" border="0" />')
print(soup.img.attrs)
# {'src': '#', 'alt': 'Click Here >', 'border': '0'}
soup.prettify()
# '<img src="#" alt="Click Here >" />\n" border="0" />\n'
这个例子展示了 alt
属性里面正确地包含了 >
字符,而 border
属性也被正确识别了。