Python爬虫入门:pyquery库基础

本文详细介绍了使用Python的PyQuery库进行网页数据抓取的方法,包括节点查找、内容获取及节点操作等核心功能,适用于初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python爬虫入门:pyquery库基础

pyquery基础使用方法

  • find 查找节点
  • children 子节点
  • parent 父节点
  • parents 祖先节点
  • siblings 兄弟节点
  • items 获取内容项目
  • attr 获取属性
  • text 提取文本
  • html 获取html文本
html = """
<div>
<ul class="list">
<li class="item-0">one</li>
<li class="item-1"><a href="www.youkuaiyun.com">two</a></li>
<li class="item-0" id="three"><span class="bold"><a href="www.baidu.com">three</a></span></li>
<li class="item-1 active"><a href="www.youkuaiyun.com">four</a></li>
<li class="item-0"><a href="www.youkuaiyun.com">five</a></li>
</ul>
</div>
"""
import requests
from pyquery import PyQuery as pq
doc = pq('https://www.qq.com')
print(doc('title'))
doc = pq(html)
print(doc.find('ul').children('.item-0'))
print('*'*20+'text'+'*'*20)
print(doc.find('ul').children('.item-0')[0].text)
print('*'*20+'parent'+'*'*20)
print(doc.find('ul').children('.item-0').parent())
print('*'*20+'parents'+'*'*20)
print(doc.find('ul').children('.item-0').parents())
print('*'*20+'siblings'+'*'*20)
print(doc.find('ul').children('.item-1.active').siblings())
print('*'*20+'通过items()来遍历'+'*'*20)
for item in doc.find('ul').children('.item-0').items():
    print(item)
print('*'*20+'通过attr方法获取属性'+'*'*20)
print(doc.find('ul').children('.item-1.active').attr('class'))
print(doc.find('ul').children('.item-1.active').attr['class'])
print('*'*20+'通过text方法获取文字内容'+'*'*20)
print(doc.find('ul').children('.item-1.active').text())
print('*'*20+'通过html方法获取内容'+'*'*20)
print(doc.find('ul').children('.item-1.active').html())

节点操作

  • addClass()
  • removeClass()
  • attr(‘name’,‘value’) 两个参数代表修改,一个参数代表获取
  • text(“new text”) 带参数为修改内容
  • html(“new html”) 带参数为修改内容
  • remove() 移除元素
  • append() 在被选元素的结尾插入内容
  • empty() 清空元素
  • prepend() 在被选元素的开始插入内容
html = """
<div>
<ul class="list">
<li class="item-0">one</li>
<li class="item-1"><a href="www.youkuaiyun.com">two</a></li>
<li class="item-0" id="three"><span class="bold"><a href="www.baidu.com">three</a></span></li>
<li class="item-1 active"><a href="www.youkuaiyun.com">four</a></li>
<li class="item-0"><a href="www.youkuaiyun.com">five</a></li>
</ul>
</div>
"""
import requests
from pyquery import PyQuery as pq
doc = pq(html)
li = doc('.item-1.active')
print(li)
li.removeClass('active')
print(li)
li.addClass('activate')
print(li)
li.attr('name','link')
print(li)
li.text('changed item')
print(li)
li.html('<span>changed item</span>')
print(li)
li.append('<img src="img.png"/>')
print(li)
li.prepend('<img src="img2.png"/>')
print(li)
li.remove('img')
print(li)
li.empty()
print(li)

伪类操作

  • :first-child 第一个元素
  • :last-child 最后一个元素
  • :nth-child(2) 第二个元素
  • :gt(2) 第三个以后的元素(第四个开始)
  • :nth-child(2n) 步长为2获取元素,即1、3、5……
  • :contains(“four”) 获取包含指定字符串的元素
html = """
<div class="wrap">
<div class="container">
<ul class="list">
<li class="item-0">one</li>
<li class="item-1"><a href="www.youkuaiyun.com">two</a></li>
<li class="item-0" id="three"><span class="bold"><a href="www.baidu.com">three</a></span></li>
<li class="item-1 active"><a href="www.youkuaiyun.com">four</a></li>
<li class="item-0"><a href="www.youkuaiyun.com">five</a></li>
</ul>
</div>
</div>
"""
import requests
from pyquery import PyQuery as pq
doc = pq(html)
# 获取第一个元素
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)
# 设置步长为2获取元素
li = doc('li:nth-child(2n)')
print(li)
# 获取包含某内容的元素
li = doc('li:contains("four")')
print(li)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值