Python爬虫学习笔记(pyquery)
程序员文章站
2022-05-08 18:27:56
...
from pyquery import PyQuery as pq html =''' <div id="container"> <ul class="list"> <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><lli> <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> ''' doc = pq(html) #字符串初始化为pq对象 print(doc('li')) #传入li节点以获取 doc1 = pq(url='https://baidu.com') #请求url并完成HTML的初始化 print(doc1('title'))#获取 doc2 = pq(filename='demo.html') #初始化本地文本 print(doc2('li')) print(doc('#container .list li')) #选取id为container,再选取其内部的list类中的所有li节点 print(type(doc('#container .list li'))) #pyquery类型 #常用查询函数,与jQuery中函数的用法完全相同 #find()方法传入CSS选择器查找子节点 items = doc('.list') #选取类为list的节点 print(items) lis = items.find('li') #传入CSS选择器,选取其内部所有子孙节点的所有li节点 print(lis) #如果只查找子节点中的 lis1 = items.children('.active') #选取子节点中的特定节点 print(lis1) #查找直接父节点 container = items.parent() #如果是parents()则是查找所有祖先节点;如果再传入CSS选择器就可以查找特定的祖先节点:items.parents('.***') print(container) #兄弟节点 li = doc('.list .item-0.active') print(li.siblings()) #可以加入CSS选择器选取特定兄弟节点li.siblings(’。active) #节点转化成字符串 print(str(li)) #遍历,生成器 lis1 = doc('li').items() for li in lis1: print(li,type(li)) #获取属性 a = doc('.item-0.active a') print(a,type(a)) print(a.attr('href')) #,获得死一个属性,等价于a.attr.href #获得所有属性 a1 = doc('a') for item in a1.items(): print(item.attr('href')) print(a1.text()) #获取文本 li1 = doc('.item-0.active') print(li.html()) #获取li节点中包含的HTML代码,遍历获取所有 li1.removeClass('active') #移除li节点中的active属性 li1.addClass('active') #添加li节点中的active属性 li1.attr('name','link') #修改名称为name的属性值为link li1.text('change item')#修改节点内容 li1.html('<span>change item</span>') #修改<span>节点内容 #移除某个节点 li.remove('a')#移除li节点中的a节点 #伪类选择器 li2 = doc('li:first-child') #选择第一个li li3 = doc('li:last-child') #选择最后一个li li4 = doc('li:nth-child(2)') #选择第二个li li5 = doc('li:gt(2)') #选择第三个li节点之后的节点 li6 = doc('li:nth-child(2)') #偶数位置的节点 li7 = doc('li:contains(second)') #包含second文本的li节点
上一篇: Linux Namespace
下一篇: 网络爬虫:pyquery