您必须将属性值括在双引号中:
a[href="/city/london d12"]
但是,看起来这个特定的选择器被识别为"无效" BeautifulSoup
.这是因为BeautifulSoup
只支持基本的CSS选择器:
这对于了解CSS选择器语法的用户来说非常方便.你可以使用Beautiful Soup API完成所有这些工作.如果你只需要CSS选择器,你也可以直接使用lxml:它更快,并且它支持更多的CSS选择器.但是,这可以让您将简单的CSS选择器与Beautiful Soup API结合使用.
让我们按照建议直接使用lxml
+cssselect
:
>>> from lxml.cssselect import CSSSelector >>> from lxml.etree import fromstring >>> >>> sel = CSSSelector('a[href="/city/london d12"]') >>> >>> tree = fromstring('london') >>> sel(tree) []
您还可以使用部分属性匹配:
soup.select('a[href*=london]') # contains "london" soup.select('a[href$=d12]') # ends with "d12" soup.select('a[href^=/city/london]') # starts with "city/london"