Python爬虫入门:pyquery库基础

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.csdn.net">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.csdn.net">four</a></li>
<li class="item-0"><a href="www.csdn.net">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.csdn.net">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.csdn.net">four</a></li>
<li class="item-0"><a href="www.csdn.net">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.csdn.net">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.csdn.net">four</a></li>
<li class="item-0"><a href="www.csdn.net">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)
上一篇:PyQuery: 爬虫界最简洁优雅的库


下一篇:python3爬虫(7)--使用pyquery的CSS选择器(Selectors)解析数据