解析库的使用

  • 使用 Xpath
  • 使用 pyquery
from pyquery import PyQuery as pq
doc = pq(html)
print(doc)

PyQuery对象可以接受的参数有

  • html格式的字符串
  • html文件
  • 指定参数 url = '...'

PyQuery对象用于后续的进行选择、筛选等操作

用于解析的html格式的字符串html

html = '''

second itemthird item

fifth item

'''
from pyquery import PyQuery as pq
doc = pq(html)
doc('#container .list li')
print(doc)
  • 用pq对象初始化后,通过在单引号中输入筛选条件来完成在pq文件中的筛选
  • 这种筛选用法为css选择器,选择条件间以空格分开
  • #name表示id为name, .name表示class为name, name表示选择name节点
  • 此时doc对象仍为pq类型
  • 选择器的并列于先后关系 ​ 以 doc('.list .item-0.active')为例
  • 先选择了 class = "list"的节点,之后再进行一次筛选,选择了 class = "item-0 active"的节点
  • 也即是说空格前后在筛选时有着先后的顺序关系,未以空格分割开的同类条件有着并列关系。

  • pq.find():在所有子孙节点中查找

  • pq.children():在所有子节点中查找
  • pq.parent():在该结点的父结点中查找
  • pq.parents():在该结点的祖先节点中查找

其中括号中传入的参数仍为CSS选择器的语法,即仍为: doc('#container .list li')

在查询结果不止一条时,需要通过遍历来完成更高的操作要求。

doc = pq(html)
lis = doc('li').items()
for aNode in lis:
    print(aNode)
  • 对查询结果调用了 items()方法,这时类型会由PyQuery转变为迭代对象generator,可以使用for语句来进行操作

​ 可以进行的操作包括

  • 获取节点的属性、文本
  • 删除、改变或添加节点的属性、文本
  • 移除某个节点

  • pq.attr('attrName')

doc = pq(html)
a = doc('.item-0.active a')
print(a.attr('href'))
print(a.attr.href) #另一种写法

该代码段选中的节点如下: <a href="link3.html"><span class="bold">third item</span></a> 最后输出结果为: link3.html,输出了对应的a节点中的超链接的内容。
– 特别注意:在PyQuery查询对象结果中有多个时,该方法只会输出第一个节点中的内容。若要实现多个节点的内容均输出,需要结合上一届的迭代来完成。

  • pq.text()
doc = pq(html)
a = doc('.item-0.active a')
print(a.text())

该代码段选中的节点如下: <a href="link3.html"><span class="bold">third item</span></a> 最后输出的结果为: third item,输出了节点的纯文字内容。
* pq.html() 若选择该方法,则返回的为该节点的全部html语句,即输出结果为: <a href="link3.html"><span class="bold">third item</span></a>,但此时的类型为字符串。
* 特别注意 若得到的查询结果为多个节点
– .text()方法不需要遍历就可以取得
– .html()方法需要遍历才可以取得

  • pq.attr('name','content): 若name为已经存在的属性名称,则进行修改操作;若name尚不存在,则表示添加新属性
  • pq.text('content'): 将该节点的纯文本内容改作 content
  • pq.html('content'):将该节点的html内容改为 content
  • pq.remove(): 需要先选中某个节点,执行后会将该节点删除。

Original: https://www.cnblogs.com/dysonxxxxx/p/16581937.html
Author: dysonkkk
Title: 解析库的使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578856/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 在Linux下安装Redis

    1. 下载Redis的压缩包 [root@spirit-of-fire ~]# wget http://download.redis.io/releases/redis-5.0.5…

    Linux 2023年6月14日
    098
  • 华为云服务器数据库配置远程连接

    华为云服务器数据库配置远程连接 起因 暑期购买了华为云的一台服务器进行开发 在上面部署了MySQL数据库,由于app中修改用户信息存在未修复的bug,经常会出现登录密码为空,导致账…

    Linux 2023年6月13日
    0135
  • 网络设备配置–10、利用ACL配置访问控制

    一、前言 同系列前几篇:网络设备配置–1、配置交换机enable、console、telnet密码网络设备配置–2、通过交换机划分vlan网络设备配置&#8…

    Linux 2023年6月8日
    0112
  • final关键字

    1-1 编译期常量 定义:带有 ①编译时数值(区别于运行时数值)的 ②final ③ 基本数据类型的量。 注意: 既是static又是final的量不一定是编译期常量; publi…

    Linux 2023年6月8日
    077
  • TCP传输层协议 特性

    客户A和服务器B都处于建立连接的状态,此时客户A主动与服务器B发出断开连接的请求: 第一步:客户A会发送一个序号为Seq=u的报文给服务器B,此时控制位中的断开位FIN=1,即请求…

    Linux 2023年6月6日
    088
  • 【填空题】考研数据结构填空题整理

    数据结构填空题 题源来自《算法与数据结构考研试题精析》、《王道数据结构》在Liang’s Blog所著的文章上补充考点,仅供参考学习 一、概论 数据元素 是数据的基本单…

    Linux 2023年6月13日
    0119
  • 哨兵+redis主从部署架构-docker部署

    架构图 哨兵的介绍 sentinel , 中文是哨兵。 哨兵是redis 集群架构中非常重要的一个组件,主要功能如下: (1)集群监控:负责监控reidis master 和sla…

    Linux 2023年5月28日
    086
  • WPF 调试依赖属性变更方法

    本文告诉大家如何调试 WPF 的某个依赖属性被变更的方法 在 WPF 里面,所有的依赖属性都有带通知的功能,通过带通知的功能,可以在通知里加上断点,通过调用堆栈了解是哪个模块调用的…

    Linux 2023年6月6日
    093
  • 从前,有一个简单的通道系统叫尤娜……

    从前,有个女生宿舍,住着小A、小B、尤娜和我4个人。有天,小A不小心把小B的床板坐塌了。小B非常生气,当场和小A翻脸。不论人缘最好的尤娜怎么中间调解都不管用。一直到毕业,小A和小B…

    Linux 2023年6月14日
    0121
  • 2021 — 冰与火之歌

    大半夜的睡不着,越发的想给 2021 年作个总结,一想更睡不着了,来唠叨下吧。 一拖再拖的婚礼。本来定在今年正月的婚礼,因为疫情,不敢办,村里也不让办;然后选在国庆吧,卧槽,封城了…

    Linux 2023年6月16日
    0121
  • Java — 枚举

    枚举是 JDK5 中引入的特性,由 enum 关键字来定义一个枚举类。 格式: enum 枚举类名 { 枚举项1, 枚举项2, …; 成员变量; 构造方法 成员方法 } 说明:…

    Linux 2023年6月8日
    091
  • 高速USB转8串口产品设计-RS232串口

    基于480Mbps 高速USB转8路串口芯片CH348,可以为各类主机扩展出8个独立的串口。使用厂商提供的VCP串口驱动程序,可支持Windows、Linux、Android、ma…

    Linux 2023年6月7日
    091
  • 如何使用 Javascript 将图标字体渲染为图片

    前言 在软件开发中肯定要用到图标,比如下图的 Groove 音乐中就用到了许多图标。一种获取这些图标的方法是把 Groove 音乐截个图,然后熟练地开启 Photoshop,开始抠…

    Linux 2023年6月7日
    0108
  • Laxcus远程终端

    Laxcus集群操作系统的远程终端越来越象Linux的VIM了,除了界面风格之外,在用户使用的命令上也在向VIM靠近,原因嘛也不难理解,毕竟Laxcus是一个分布式的操作系统,处理…

    Linux 2023年6月6日
    0114
  • linux bash 手册

    1、Linux shell简介 shell是一种特殊的交互式工具,包含了一组内部命令,这些命令可以完成复制文件,移动文件,显示和终止程序等操作。shell的核心是命令行提示符,它允…

    Linux 2023年6月7日
    087
  • 通过配置文件(.htaccess)实现文件上传

    一·什么是服务器配置文件.htaccess许多服务器还允许开发人员在各个目录中创建特殊的配置文件,以便覆盖或添加一个或多个全局设置。例如,Apache 服务器将从一个名为(.hta…

    Linux 2023年6月7日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球