BeautifulSoup -- 防止标签自动关闭

发布于 2024-11-16 01:12:47 字数 650 浏览 0 评论 0原文

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

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

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

任何人都可以建议阻止 BeautifulSoup 在遇到“>”时自动关闭 img 标签。象征?

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

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

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

BeautifulSoup is choking on parsing the following code:

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

I should also note, I have no control over the input html. There are many different variations of the text/attributes so I want to avoid using Regex.

Anyone have a suggestion for stopping BeautifulSoup from automatically closing the img tag when it runs into the ">" symbol?

Edit 1: I have found this in the documentation. Could I control how BeautifulSoup parses the IMG tag?

Edit 2: I solved my problem. Before I called BS, I did did a text replace

text.replace('>"','>"')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情绪少女 2024-11-23 01:12:47

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 属性已被识别。

BeautifulSoup4 has been updated to be context aware and has since solved this issue. If you update to the latest version of BeautifulSoup4 it will ignore the > tag when enclosed in quotes.

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'

The example shows that the alt attribute correctly has the > character, and the border attribute has been recognised.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文