BeautifulSoup - 防止标记自动关闭

时间:2011-06-15 23:35:50

标签: python beautifulsoup

BeautifulSoup在解析以下代码时感到窒息:

>>> soup = BeautifulSoup('<img src="#" alt="Click Here >" border="0" />')
>>> soup.prettify()
'<img src="#" alt="Click Here &gt;" />\n" border="0" />\n'

我还应该注意,我无法控制输入html。文本/属性有许多不同的变体,所以我想避免使用正则表达式。

任何人都有建议阻止BeautifulSoup在遇到“&gt;”时自动关闭img标记符号?

编辑1:我在文档中找到了this。我可以控制BeautifulSoup如何解析IMG标签吗?

编辑2:我解决了我的问题。在我打电话给BS之前,我确实做了一个文本替换

text.replace('>"','&gt;"')

1 个答案:

答案 0 :(得分: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 &gt;" />\n" border="0" />\n'

该示例显示alt属性正确具有>字符,并且border属性已被识别。