BeautifulSoup CSS选择器使用''括起来,但是当用“”括起来时不能

时间:2015-02-20 16:58:01

标签: python css-selectors beautifulsoup

我发现CSS选择器在''中包含时正常工作,但在""附近时无效。

如果有人知道原因,我很想知道。

首先我想我必须使用'',但在official documentation ""中使用。

我看到的唯一结论是因为原始页面链接在"",但我已经提交说明这不是理由。

这是源代码:

import urllib2
from bs4 import BeautifulSoup

url = "http://www.timeanddate.com/holidays/"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page, features="lxml")

# get all countries with links to holidays
links = soup.select('li > a[href*="/holidays/"]')    # WORKING
# links = soup.select("li > a[href*='/holidays/']")  # NOT WORKING

for item in links:
    print item

print len(links)

1 个答案:

答案 0 :(得分:0)

看起来CSS选择器语法需要双引号用于其内部引用。这就是为什么具有 li > a[href*='/holidays/']的字符串不起作用,而具有 li > a[href*="/holidays/"]的字符串会起作用。要在Python中创建具有后一个值的字符串,您可以使用单引号或双引号(因为在Python中,两者之间没有区别,就像在Perl中一样)。但是,如果您使用双引号括起字符串,则必须转义嵌入其中的双引号,如下所示:

soup.select("li > a[href*=\"/holidays/\"]")

与仅使用单引号相比,这有点麻烦,因此这将是一个更清晰的解决方案。