pyquery库的使用

pyquery库的使用

初始化

### 字符串初始化

from pyquery import PyQuery as pq

html = ''''''
doc = pq(html)
print(doc('li'))

### URL初始化

# doc = pq(url = "https://baidu.com")
# print(doc('title'))

### 文件初始化
# doc = pq(filename ='text.html')
# print(doc('li'))

## 基本的css选择器

print(doc('.m-list li a'))
print(type(doc('.m-list li a')))
doc = doc('ul')
print(doc.find('li'))   # find()方法会查找范围是所有子孙节点,如果只想查找子节点,可以用children()方法
print(doc.parent())     # parent()方法来获取某个节点的父节点,如果想获取某个祖宗节点可以用parents()方法
print(doc.siblings())    # siblings()用来获取兄弟节点

遍历

对于单个节点来说,可以直接打印输出,也可以直接转化为字符串
但对于多个节点的结果,需要调用items()方法进行遍历

lis = doc('li').items()
print(type(lis))
for li in lis:
    print(li,type(li))

获取信息

a_items = doc('li a').items()
print(type(a_items))
for a in a_items:
    print(a.attr('href'))   #可以调用attr()方法来获取属性
    print(a.attr.href)      #也可以调用attr属性来获取属性
#当选中的节点具有多个时,直接调用a.attr()只会返回第一个结果,不会返回多个
    print(a.text())     #可以使用text()方法获取节点内部的纯文本,不包含html
    print(a.html())     #可以使用html()方法获取节点内包含html的文本

节点操作

li = doc('.test')
print(li)

#可以调用removeClass()方法删除节点中指定的class属性
li.removeClass('test')      
print(li)

#可以调用addClass()方法向节点添加class属性
li.addClass('test')         
print(li)

#可以调用attr()方法修改某个属性的值,第一个参数是属性名,第二个参数是属性的值
li.attr('title','link')
print(li)

#可以调用text()方法修改节点内的纯文本
li.text('I Love Lina')
print(li)

#可以调用html()方法修改节点内的html文本
li.html('Lina,I miss you')
print(li)

#可以调用remove()方法移除该节点
li.find('span').remove()
print(li)

伪类选择器

li = doc('li:first-child')
print(li)
li = doc('li:last-child')
print(li)
li = doc('li:nth-child(2)')
print(li)
li = doc('li:gt(2)')
print(li)
li = doc('li:nth-child(2n)')
print(li)
li = doc('li:contains(second)')
print(li)

你可能感兴趣的:(python)