#案例 #0.通过pyquery定位如下html源码中的第二对儿ul中的li文本(使用CSS选择器实现,不要用下标索引)。

案例 #0.通过pyquery定位如下html源码中的第二对儿ul中的li文本(使用CSS选择器实现,不要用下标索引)

这里先上代码:

#案例
#0.通过pyquery定位如下html源码中的第二对儿ul中的li文本(使用CSS选择器实现,不要用下标索引)。

html = """
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
"""
#方法一 这个可以看一下Python3网络爬虫开发实战崔庆才著的那本,第182页有具体BeautifulSoup的css选择器的应用 from bs4 import BeautifulSoup soup=BeautifulSoup(html,'lxml')#这用的是BeautifulSoup这个解析库 print(soup.select('ul:nth-child(2)>li')) #方法二 方法二是用的pyquery解析库,在书上的185页,也有相关css选择器的解释 from pyquery import PyQuery as pq doc=pq(html) print(doc('ul:nth-child(2)>li'))

这里用了一个伪类构造选择器就是这个代码,其中单引号的内的东西是,css选择器选择出来的

print(doc('ul:nth-child(2)>li'))

要求说第二对ul的li标签对吧,我们就可以用下面的选择器:
CSS3 结构性伪类选择器—nth-child(n)
:nth-child(n)选择器用来定位某个父元素的一个或多个特定的子元素。其中“n”是其参数,而且可以是整数值(1,2,3,4),也可以是表达式(2n+1、-n+5)和关键词(odd、even),但参数n的起始值始终是1,而不是0。也就是说,参数n的值为0时,选择器将选择不到任何匹配的元素。
简单说这案例就写nth-child(2)就可以,但是子元素就是ul,父元素就是div。

1.对上例中所有的li节点,奇数节点添加class值:active-0,偶数节点添加class值:active-1。

from pyquery import PyQuery as pq
doc=pq(html)
li=doc('li:nth-child(2n+1)')
print(li)
li.addClass('active-0')
print(li)

同样这里也是用了同一个选择器,当然这里的2n+1就是表达式,代表奇数位置

你可能感兴趣的:(python,css)