菜鸟博客
菜鸟站长

【python爬虫学习笔记】pyquery的常用方法

查找子节点

from pyquery import PyQuery as pq

#需要安装 pyquery 库
doc = pq(html)
items = doc('.list')
print(type(items))
print(items)
lis = items.find('li')
print(type(lis))
print(lis)
#find 的查找范围是节点的所有子孙节点,而如果我们只想查找子节点,那可以用 children 方法:
lis = items.children()
print(type(lis))
print(lis)
#筛选出子节点中 class 为 active 的节点
lis = items.children('.active')
print(lis)

查找父节点

from pyquery import PyQuery as pq

doc = pq(html)
items = doc('.list')
#这里的父节点是该节点的直接父节点
container = items.parent()
print(type(container))
print(container)
#使用 parents 方法会返回所有的祖先节点
parents = items.parents()
print(type(parents))
print(parents)
#返回祖先节点中符合 CSS 选择器的节点
parent = items.parents('.wrap')
print(parent)

查找兄弟节点

from pyquery import PyQuery as pq

doc = pq(html)
li = doc('.list .item-0.active')
print(li.siblings())
#筛选节点
print(li.siblings('.active'))

遍历节点

from pyquery import PyQuery as pq

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

调用 attr 属性来获取属性值

from pyquery import PyQuery as pq

doc = pq(html)
a = doc('a')
print(a, type(a))
#当返回结果包含多个节点时,调用 attr 方法,只会得到第 1 个节点的属性
print(a.attr('href'))
print(a.attr.href)
#遍历获取所有的 a 节点的属性
for item in a.items():
    print(item.attr('href'))

获取文本和 HTML 文本

from pyquery import PyQuery as pq

doc = pq(html)
a = doc('.item-0.active a')
print(a)
#text 会忽略节点内部包含的所有 HTML,只返回纯文字内容
print(a.text())
#返回节点内的所有 HTML 文本
print(li.html())
#多个节点,html 方法返回的是第 1 个节点的内部 HTML 文本,而 text 则返回了所有的节点内部的纯文本,中间用一个空格分割开,即返回结果是一个字符串

节点操作

from pyquery import PyQuery as pq

doc = pq(html)
li = doc('.item-0.active')
print(li)
#addClass 和 removeClass 方法,添加和移除节点的 class 属性
li.removeClass('active')
print(li)
li.addClass('active')
print(li)
#使用 attr 方法时如果只传入第 1 个参数的属性名,则是获取这个属性值;如果传入第 2 个参数,可以用来修改属性值
li.attr('name', 'link')
print(li)
#使用 text 和 html 方法时如果不传参数,则是获取节点内纯文本和 HTML 文本,如果传入参数,则进行赋值
li.text('changed item')
print(li)
li.html('<span>changed item</span>')
print(li)
#remove 移除节点
wrap = doc('.wrap')
wrap.find('p').remove()
print(wrap.text())
#更多详细方法:http://pyquery.readthedocs.io/en/latest/api.html

关于 CSS 选择器的更多用法,可以参考 http://www.w3school.com.cn/css/index.asp

赞(0)
未经允许不得转载:不吃香菜 » 【python爬虫学习笔记】pyquery的常用方法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址