基本CSS选择器
首先,用一个实例感受pyquery的CSS选择器的用法:
运行结果如下:
这里我们初始化PyQuery对象之后,传入了一个CSS选择器#container .list li,它的意思是先选取id为container的节点,然后,打印输出。可以看到,我们成功获取到了符合条件的节点。
最后,将它的类型打印输出。可以看到,它的类型依然是PyQuery类型。
查找节点
下面我们介绍一些常用的查询函数,这些函数和jQuery中函数的用法完全相同。
子节点查找子节点时,需要用到find( )方法,此时传入的参数是CSS选择器。这里还是以前面的HTML为例子:
运行结果如下:
首先,我们选取class为list的节点,然后调用了find( )方法,传入CSS选择器,选取其内部的li节点,最后打印输出。可以发现,find( )方法会讲符合条件的所有节点选择出来,结果的类型是PyQuery类型。
其实,find( )方法的查找范围是节点的所有子孙节点,而如果我们只想查找子节点,那么可以用children( )方法:
运行结果如下:
如果要筛选所有子节点中符合条件的节点,比如想筛选出子节点中的class为active的节点,可以向children( )方法传入CSS选择器,active:
运行结果如下:
可以看到,输出结果已经做了筛选,留下了class为active的节点。
父节点我们可以用parent( )方法来获取某个节点的父节点,示例如下:
运行结果如下:
这里我们首先用.list选取class为list的节点,然后调用parent( )方法得到其父节点,其类型依然是PyQuery类型。
这里的父节点是该节点的直接父节点,也就是说,它不会再去查找父节点的父节点,即祖先节点。但是如果想获取某个祖先节点,该怎么办呢?这时可以用parents( )方法:
运行结果如下:
可以看到,输出结果有两个:一个是class为wrap的节点,一个是id为container的节点。也就是说,parents( )方法会返回所有的祖先节点。
如果想要筛选某个祖先节点的话,可以向parents( )方法传入CSS选择器,这样就会返回祖先节点中符合CSS选择器的节点:
运行结果如下:
可以看到,输出结果少了一个节点,只保留了class为wrap的节点。
兄弟节点前面我们说明了子节点和父节点的用法,还有一种节点,那就是兄弟节点。如果要获取兄弟节点,可以使用siblings( )方法。这里还是以上面的HTML代码为例:
这里首先选择class为list的节点内部class为item-0和active的节点,也就是第三个li节点。那么,很明显,它的兄弟节点有4个,那就是第一二三四五个li节点。
运行结果如下:
可以看到,这正是我们刚才所说的4个兄弟节点。
如果要筛选某个兄弟节点,我们依然可以向siblings( )方法传入CSS选择器,这样就会从所有兄弟节点中挑选出符合条件的节点了:
这里我们筛选了class为active的节点,通过刚才的结果可以观察到,class为active的兄弟节点只有第四个li节点,所以结果应该是一个。
我们再来看一下运行结果:
下面一节我们将会对节点操作作出进一步的解释以及相关用法的介绍。