我发现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)
答案 0 :(得分:0)
看起来CSS选择器语法需要双引号用于其内部引用。这就是为什么具有值 li > a[href*='/holidays/']
的字符串不起作用,而具有值 li > a[href*="/holidays/"]
的字符串会起作用。要在Python中创建具有后一个值的字符串,您可以使用单引号或双引号(因为在Python中,两者之间没有区别,就像在Perl中一样)。但是,如果您使用双引号括起字符串,则必须转义嵌入其中的双引号,如下所示:
soup.select("li > a[href*=\"/holidays/\"]")
与仅使用单引号相比,这有点麻烦,因此这将是一个更清晰的解决方案。