Python爬虫——pyquery

一、安装pyquery

1、pip安装(强烈推荐)

打开命令行,输入以下命令:
pip intall pyquery
命令执行完毕之后即可完成安装。
提示:如果下载失败简易多尝试几次哦

2、wheel安装

进入PyPI网站 https://pypi.python.org/pypi/pyquery/#downloads 下载对应的wheel文件安装。下载完成之后,打开命令行cd到文件所在处执行以下命令,如:
pip install 文件名(如:pyquery-1.2.17-py2.py3-none-any.whl)

3、验证安装

安装完成之后,可以在命令行下测试:
python
import pyquery
如果没有报错,就证明库已经安装成功啦!

二、使用pyquery

1.初识化对象

1.1字符串初始
from pyquery import PyQuery as pq
doc ='''
<div>
  <ul class="feed_new_arrlist">
    <li class="clearfix">
      <span class="arr" id="first"><i class="icon CSDN_iconfont Feed-arrowup"></i></span>
      <span class="txt" id="second"><a href="https://bss.csdn.net/m/pk/home?id=10600" target="_blank">达摩院 2020 十大科技趋势发布,大变局到来!</a></span>
    </li>
    <li class="clearfix">
      <span class="arr"><i class="icon CSDN_iconfont Feed-arrowup"></i></span>
      <span class="txt"><a href="https://bss.csdn.net/m/pk/home?id=10599" target="_blank">如何看待AI换脸技术?</a></span>
    </li>
  </ul>
</div>
'''
doc = pq(html)
print(doc('li'))

运行结果如下:

<li class="clearfix">
      <span class="arr"><i class="icon CSDN_iconfont Feed-arrowup"/></span>
      <span class="txt"><a href="https://bss.csdn.net/m/pk/home?id=10600" target="_blank">达摩院 2020 十大科技趋势发布,大变局到来!</a></span>
    </li>
    <li class="clearfix">
      <span class="arr"><i class="icon CSDN_iconfont Feed-arrowup"/></span>
      <span class="txt"><a href="https://bss.csdn.net/m/pk/home?id=10599" target="_blank">如何看待AI换脸技术?</a></span>
    </li>
    
1.2url地址初始

html就是上个代码中html(之后不再说明)

from pyquery import PyQuery as pq
doc = pq(url='http://www.baidu.com')
1.3文件初始
from pyquery import PyQuery as pq
doc = pq(filename='xx.html')

2.查找节点

2.1使用CSS选择器

知识点补充:
在CSS选择器中,以#开头带表选择id,其后紧跟id的名称,如#container代表选择id为container的节点。以(.)点开头的代表选择class,其后紧跟class的名称,如.arr代表选择class为arr的节点。除此之外也可以直接写标签名来选择节点,如li代表选择标签名为li的节点。多个选择器之间加上空格便可以代表嵌套关系,如.clearfix .txt则代表选择class为clearfix的节点,再选择该节点内部class为txt的节点。如果不加空格,则代表并列关系,如:span.txt则选择了class为txt的span节点。

from pyquery import PyQuery as pq
doc = pq(html)
#选择class为feed_new_arrlist内部中class为clearfix中的id为second的节点
span = doc('.feed_new_arrlist .clearfix #second')
print(span)
print(type(span))

结果如下:

<span class="txt" id="second"><a href="https://bss.csdn.net/m/pk/home?id=10600" target="_blank">达摩院 2020 十大科技趋势发布,大变局到来!</a></span>

<class 'pyquery.pyquery.PyQuery'>
2.2 子节点

查找子节点和孙节点时,需要用到find()方法,传入的参数是CSS选择器。。

doc = pq(html)
#选择class为feed_new_arrlist的ul节点
ul = doc('ul.feed_new_arrlist')
print(ul)
print(type(ul))
#选择ul节点下的所有标签名为li的子节点
lis = ul.find('li')
print(lis)
print(type(lis))

结果如下:
在这里插入图片描述
如果只想查找子节点而不查找孙节点的话,将find方法改为children即可。

2.3父节点

parent()方法可以获取某个节点的直接父节点。如果想获取某个节点的祖先节点的话可以调用parents()方法来实现,其中可以传入CSS选择器参数来筛选想要的祖先节点。方法和查找子节点类似,就不举例子了。

2.4兄弟节点

使用siblings()方法可以获得某个节点的所有的兄弟节点,其中也可以传入CSS选择器参数来筛选你想要的节点,方法同上,也就不举例了。

3.遍历选择的节点

有些时候我们选择的节点不止一个,因此需要我们就需要遍历来对每一个查询到的节点进行操作。

doc = pq(html)
#选择所有的li节点
lis = doc('li')
for li in lis.items():
 print(li) 

结果如下:
在这里插入图片描述

4.获取信息

4.1获取属性

提取到某个节点后,就可以调用attr()方法来获取属性。

doc = pq(html)
#选择所有的li节点
lis = doc('li')
for li in lis.items():
 print(li.attr('class')) 

结果如下:

clearfix
clearfix
4.2获取文本

提取到某个节点后,调用txt()方法就可以获取其内部的文本了。

doc = pq(html)
#选择所有的li节点
lis = doc('li')
for li in lis.items():
 print(li.text()) 
达摩院 2020 十大科技趋势发布,大变局到来!
如何看待AI换脸技术?

三、更多

好了,pyquery就介绍到这。当然pyquery还有更多的用处,想知道更多的话就去访问pyquery官方文档吧。

刚写博客,定有不足之处,欢迎大家在下方评论指出。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值