我在使用 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 & 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.gz和http://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 & baz</option>]
15:24:41 pataluc ~ % python stack.py 4.2.1
Beautiful Soup 4.2.1
[<option>foo</option>, <option>bar & baz</option>, <option>qux</option>]
所以我想我的问题已经结束了。感谢您的评论让我意识到这是一个版本问题。