gpt4 book ai didi

python - 美丽汤4 : Ampersand in text

转载 作者:行者123 更新时间:2023-12-01 05:43:10 24 4
gpt4 key购买 nike

我在使用 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(或通过转换/转换它)?

谢谢

编辑:似乎是 4.2.0 的错误...我下载了 4.2.0 和 4.2.1 版本(来自 http://www.crummy.com/software/BeautifulSoup/bs4/download/4.2/beautifulsoup4-4.2.0.tar.gzhttp://www.crummy.com/software/BeautifulSoup/bs4/download/4.2/beautifulsoup4-4.2.1.tar.gz ),将其解压缩到我的脚本文件夹中,将我的代码更改为:

import sys
sys.path.insert(0, "beautifulsoup4-" + sys.argv[1])
from bs4 import BeautifulSoup, __version__

print "Beautiful Soup %s" % __version__
soup_ko = BeautifulSoup('<select><option>foo</option><option>bar & baz</option><option>qux</option></select>')
print soup_ko.find_all('option')

并得到结果:

15:24:38 pataluc ~ % python stack.py 4.2.0
Beautiful Soup 4.2.0
[<option>foo</option>, <option>bar &amp; baz</option>]
15:24:41 pataluc ~ % python stack.py 4.2.1
Beautiful Soup 4.2.1
[<option>foo</option>, <option>bar &amp; baz</option>, <option>qux</option>]

所以我想我的问题已经结束了。感谢您的评论,让我意识到这是一个版本问题。

最佳答案

&在 HTML 中用于输入所谓的 HTML 实体。例如,<是 HTML 中的一个特殊符号,因为它开始一个标记,因此您使用 &lt;相反。

因此,&本身也是一个特殊符号,你应该使用 &amp;对于字面的 & 符号。您的 HTML 无效,BeautifulSoup 已修复它。

关于python - 美丽汤4 : Ampersand in text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16939813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com