IX-Python-解析网页XPath

目录

        1.XPath

        1.1.什么是XPath

        1.2.安装配置

        1.3.XPath常用规则

        1.4.快速入门

        1.5.浏览器XPath工具

        2.思维导图


1.XPath

1.1.什么是XPath

XPathXML Path Language)是一种用于在XML文档中定位和选择节点的语言。它是W3CWorld Wide Web Consortium)定义的一种标准查询语言,广泛用于解析和操作XML文档。

1.2.安装配置

安装lxml

pip install lxml

使用lxml:

from lxml import etree

1.3.XPath常用规则

XPath使用路径表达式来描述节点的位置和关系。以下是XPath的一些常用规则:

语法说明
nodeName选取此节点的所有子节点
/从当前节点选择直接子节点
//从当前节点选择子孙节点
.当前节点
..选取当前节点的父节点
@获取属性

高级用法说明:

  • 选择特定节点类型:

    • node():匹配任何节点。

    • text():匹配文本节点。

    • element:匹配元素节点。

    • @attribute:匹配属性节点。

  • 属性选择:

    • [@属性名]:匹配具有特定属性的节点。

    • [@属性名=值]:匹配属性值等于给定值的节点。

  • 位置选择:

    • [位置]:选择在指定位置的节点。

    • [last()]:选择最后一个节点。

    • [position()<n]:选择前 n 个位置的节点。

案例说明:

1.4.快速入门

在当前项目下创建一个index.html,如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
      <div class="aa">hello world</div>
      <div class="bb">hello python</div>
    </body>
</html>

完整代码示例如下:

p = pathlib.Path("index.html")
# 网页初始化
html = etree.HTML(p.read_text(encoding="utf-8"))  # type: lxml.etree._Element
# 打印类型
# print(type(html))
# 获取指定节点
# print(html.xpath("body"))
# 获取当前节点
# print(html.xpath("."))
# 获取当前节点下的直接子节点
# print(html.xpath("./body"))
# 获取当前节点下的子孙节点
# print(html.xpath("//div"))
# 获取当前节点的父节点
# div = html.xpath("./body/div")[0]  #type: lxml.etree._Element
# print(div.xpath(".."))
# 根据属性获取
# print(html.xpath("//div[@class='aa']"))
# 获取属性的值
# print(html.xpath("//div/@class"))
# 注意:元素顺序下标从1开始
# print(html.xpath("//div[1]/@class"))
# 获取文本信息
# print(html.xpath("//div[1]/text()"))
# print(html.xpath("//div[1]")[0].text)

 

1.5.浏览器XPath工具

打开Chrome浏览器,按F12打开开发者工具,找到console输入XPath语法指令查找网页内容。

参考地址:乐百川 - 简书

示例要求:通过浏览器的XPath工具搜索上述网页中的文章标题信息。

  • 方式一:直接通过@class获取

$x("//div[@class='content  ']/a/text()")

  • 方式二:通过contains函数方式匹配@class属性的值

$x("//div[contains(@class,'content')]/a/text()")

2.思维导图

----------------------------------------------------------------------------------------♥-------------------------------------------------------------------------------------

往期Python内容:

Ⅰ-Python入门与基本语法

Ⅱ-Python运算符(进阶语法)

Ⅲ-Python函数的使用

Ⅳ-Python函数进阶

Ⅴ-Python面向对象

Ⅵ-Python模块使用

Ⅶ-Python标准库

Ⅷ-Python数据库

Ⅸ-Python图形界面(Tkinter)

Ⅹ-Python爬虫使用

Ⅺ-Python正则解析

Ⅻ-Python(selenium爬取)

XⅢ-Python解析网页

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值