解析库的使用

  • 使用 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)

大家都在看

  • 大数据Hadoop集群的扩容及缩容(动态添加删除节点)

    添加白名单和黑名单 白名单,表示在白名单的主机IP地址可以用来存储数据 企业中;配置白名单,可以尽量防止黑客恶意访问攻击。 配置白名单步骤如下:原文:sw-code 1)在Name…

    Linux 2023年6月8日
    0120
  • sed与awk命令

    1.1 sed命令语法 在看单个命令以前,需要回顾一下关于所有sed命令的两点语法。在上一个章中,我们介绍了其大部分内容。行地址对于任何命令都是可选的。它可以使一个模式,被描述为由…

    Linux 2023年6月7日
    093
  • 【6】2022年8月

    8月21日 OMG!!我真的是懒骨头!不到最后一刻丝毫不紧张!! 兄弟,八月底了阿!! 你为了明年的计划,要想同一时间内赚5万和成功上岸,这太不可思议了! 你压力好大的,别到最后放…

    Linux 2023年6月13日
    078
  • 解决报错 Microsoft Visual C++ 14.0 is required

    环境:Surface Windows 10 专业版 问题:安装 Python3 的第三方库 py7zr 时不成功。而报错的是另外一个依赖库 pycryptodomex distut…

    Linux 2023年6月14日
    097
  • 【微信篇】电脑版微信的照片视频文件位置变化

    新版的微信视频图片更新了位置,感觉有好有坏吧,好的方面就是以后查找视频、图片、文档等可能更方便;不好就是越更新占用体积越大,还多很多数据,不懂是否流氓?!—【蘇小沐】 …

    Linux 2023年6月13日
    0110
  • 【pycharm】Cannot find reference ‘XXX‘ in ‘__init__.py‘ 解决办法

    Cannot find reference ‘XXX’ in ‘init.py’ 解决办法 File -> Editor -&…

    Linux 2023年6月8日
    0100
  • 最好的Java开发工具—IDEA

    IDEA的使用 IntelliJ IDEA工具的使用 1. 常见的Java集成开发工具 Eclipse IBM团队研发的一个开源的非常好用的集成开发环境。寓意:吞并Sun公司。不过…

    Linux 2023年6月14日
    092
  • jenkins使用ssh remote插件执行shell后无法退出的问题处理

    现象:通过jenkins发布代码后,执行远程命令,一直卡在执行远程命令那里打转,无法退出 脚本 #!/bin/bash 根据参数,执行进程的启动 停止 重启等 #source /e…

    Linux 2023年5月28日
    086
  • 存储过程,存储函数(Oracle)

    –打印hello world create or replace procedure sayhelloworld as –说明部分 begin dbms_output.put_…

    Linux 2023年6月14日
    076
  • 05-ElasticSearch高级搜索

    * package com.coolman.hotel.test; import com.coolman.hotel.pojo.HotelDoc; import com.faste…

    Linux 2023年6月7日
    096
  • zabbix用户,角色,权限,模板管理

    zabbix用户,角色,权限,模板管理 zabbix用户,角色,权限,模板管理 用户组用户角色右上角是创建角色用户lnh@1234使用刚才创建的用户登录模板组模板模板的监控项可以自…

    Linux 2023年6月6日
    090
  • Windows批处理一键添加hosts文件

    批处理一键添加hosts文件 此脚本主要用于安装一些学习软件时需屏弊一些网站,双击一键修改。 @echo off echo 获取Administrator权限 cacls.exe …

    Linux 2023年6月8日
    082
  • phpcms安装

    【快速安装开始】 下载解压phpcms,复制安装文件到站点目录”/opt/html”里,给予权限(官网无法访问了,所以下载地址需自行寻找上传) cd /us…

    Linux 2023年6月6日
    062
  • linux系统编码修改

    查看当前系统默认采用的字符集locale 查看系统当前编码echo $LANG如果输出为:en_US.UTF-8 英文zh_CN.UTF-8 中文 查看系统是否安装中文字符集loc…

    Linux 2023年6月6日
    086
  • Golang 实现 Redis(9): 使用GeoHash 搜索附近的人

    本文是使用 golang 实现 redis 系列的第九篇,主要介绍如何使用 GeoHash 实现搜索附近的人。 搜索附近的POI是一个非常常见的功能,它的技术难点在于地理位置是二维…

    Linux 2023年5月28日
    0108
  • go-切片的追加

    // The append built-in function appends elements to the end of a slice. If // it has suffi…

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