Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.
In [1]: import bs4
In [2]: soup = bs4.BeautifulSoup('<div class="foo bar"></div>')
In [3]: soup(attrs={'class': 'bar'})
Out[3]: [<div class="foo bar"></div>]
以防有人碰到这个问题。美组现在支持:
而且,你不必再输入findAll了。
不幸的是,BeautifulSoup将其视为一个包含空格的类
'class1 class2'
,而不是两个类['class1','class2']
。解决方法是使用正则表达式而不是字符串来搜索类。这是有效的:
你应该用lxml。它可以处理由空格分隔的多个类值(“class1 class2”)。
尽管它的名字是lxml,但它也用于解析和抓取HTML。它比BeautifulSoup快得多,甚至比BeautifulSoup(他们的名声)更好地处理“坏”的HTML。如果您不想学习lxml API,它还有一个用于美化组的兼容性API。
Ian Bicking agrees更喜欢lxml而不是BeautifulSoup。
没有理由再使用BeautifulSoup了,除非你是在Google App Engine上,或者是在不允许使用纯Python的地方。
你甚至可以在lxml中使用CSS选择器,因此它比BeautifulSoup更容易使用。尝试在交互式Python控制台中使用它。
相关问题 更多 >
编程相关推荐