### 字符串初始化
from pyquery import PyQuery as pq
html = '''
- 宿舍违规电器领回办理流程图1[2017-01-10]
- 学生申请假期住校办理流程图2[2017-01-10]
- 学生公寓区宣传品申请张贴办理流程图[2017-01-10]
- 学生公寓物品外借办理流程图[2017-01-10]
- 学生申请住宿办理流程图[2017-01-10]
- 学生宿舍调整办理流程图[2017-01-10]
'''
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)