PyQuery选择器

学了re,xpath,beautifuisoup,再接着学PyQuery时总觉得,一些语句自己已经看过很多遍了,我们从一个简单的例子入手。

html = '''
<div>
    <ul>
         <li class="item-0">first item</li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
     </ul>
 </div>
'''

from pyquery import PyQuery as pq doc = pq(html) print(doc('li'))

有用的信息就是, 

from pyquery import PyQuery as pq    #必加   pq(filename='demo.html') 本地存在demo.html时也可以
doc = pq(html)    #pq(html) 得到处理过的html代码
doc('li')       #css查找,对,我们在pyquery中用到了css查找法

doc('#container .list li') #名叫container 节点下有list属性的节点下的<li>标签

doc('.list') #属性是list

items.children('.active') # items下 属性为active的

items.parent() #item的父亲节点,一个父亲!

items.parents('.wrap') #item的所有父亲下 有wrap属性的

li = doc('.list .item-0.active') #属性是 list 下的 既有active又有item-0属性的标签

li.siblings() #所有兄弟节点
doc = pq(html)
lis = doc('li').items()    #items  产生一个生成器,通过循环提取
print(type(lis))           #<class 'generator'>
for li in lis:
    print(li, type(li))

获取信息:

.attr获取属性
a = doc('.item-0.active a')print(a.attr('href'))
.text,.html 获取文本
doc = pq(html)
li = doc('li')
print(li.html())  #第一个节点的内部  html信息
print(li.text())  #所有节点的 文本信息,注意,不输出标签相关的信息。

 节点操作

     addClass  和  removeClass,    addClass()removeClass()这些方法可以动态改变节点的class属性

doc = pq(html)
li = doc('.item-0.active')

li.removeClass('active')  #这标签里面去掉 active属性

li.addClass('active')     #这标签里面加上 active 属性

  


attrtexthtml


当然,除了操作class这个属性外,也可以用attr()方法对属性进行操作。此外,还可以用text()html()方法来改变节点内部的内容。示例如下:

 

 

 


 
posted @ 2018-09-11 16:05  3532  阅读(1048)  评论(0编辑  收藏  举报