Python爬虫学习笔记(pyquery)

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节点
















发布了33 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_33360009/article/details/104237895