猿问

BeautifulSoup4:文本中的“&”号

我在使用BeautifulSoup4时遇到问题...(我是一名Python / BeautifulSoup新手,如果我很笨,请原谅我)


为什么执行以下代码:


from bs4 import BeautifulSoup


soup_ko = BeautifulSoup('<select><option>foo</option><option>bar & baz</option><option>qux</option></select>')

soup_ok = BeautifulSoup('<select><option>foo</option><option>bar and baz</option><option>qux</option></select>')


print soup_ko.find_all('option')

print soup_ok.find_all('option')

产生以下输出:


[<option>foo</option>, <option>bar &amp; baz</option>]

[<option>foo</option>, <option>bar and baz</option>, <option>qux</option>]

我期望得到相同的结果,包含3个选项的数组...但是BeautifulSoup似乎不喜欢文本中的&符?如何在不编辑HTML(或通过转换/转换)的情况下摆脱它并获得正确的数组?


芜湖不芜
浏览 136回答 3
3回答

当年话下

&在HTML中用于输入所谓的HTML实体。例如,它<是HTML中的特殊符号,因为它以标签开头,因此您可以&lt;改用。因此,&它本身也是一个特殊的符号,您应该将它&amp;用作文字“&”号。您的HTML无效,BeautifulSoup对其进行了修复。

冉冉说

正如我在编辑的第一篇文章中所说的那样,这是BeautifulSoup 4.2.0中的一个错误,我下载了4.2.1,该错误消失了。

慕码人2483693

如前所述,&是HTML语言的一部分,但如有必要,您可以在BeautifulSoup之前使用html.escape,然后在必要时使用html.unesacpe
随时随地看视频慕课网APP

相关分类

Python
我要回答