0x01 XML 基础

xpath 是在 XML 文档中搜索内容的一门语言

HTML 是 XML 的一个子集

XML 代码举例:

<book>
<isbn>978xxxxxxxx</isbn>
<name>XML从入门到精通</name>
</book>

其中:

  1. <book><isbn>等称为节点

    1. <book><isbn>的父节点
    2. <isbn><book>的子节点之一
    3. <isbn><name>互为兄弟节点
  2. 通过节点之间的关系,从根节点查找任意节点,如\book\isbn

    xpath 查找原理

0x02 解析 XML

安装 lxml 模块:pip install lxml(4.5.0)

lxml 用法步骤:

  1. 将需要解析的 HTML 内容构造出 etree 对象

  2. 使用 etree 对象的xpath()方法配合 xpath 表达式来完成对数据的提取

    from lxml import etree
    
    html = """
    <book>
    <isbn>978xxxxxxxx</isbn>
    <name>XML从入门到精通</name>
    <ctx id="111">内容一</ctx>
    <ctx id="222">内容二</ctx>
    <div>
    <ctx id="333">内容三</ctx>
    </div>
    </book>
    """
    et = etree.XML(html) # 根据节点进行搜索
    res1 = et.xpath("/book")
    res2 = et.xpath("/book/isbn")
    res3 = et.xpath("/book//ctx")
    res4 = et.xpath("/book/*/ctx")
    res5 = et.xpath("/book//ctx/text()") # 获取该节点的文本
    # 输出结果
    print(res1)
    print(res2)
    print(res3)
    print(res4)
    print(res5)

0x03 解析 HTML

测试用 HTML:

<html>
<head>
<meta charset="utf-8" >
<title>页面标题</title>
</head>
<body>
<h1>标题一</h1>
<h2>标题二</h2>
<h3>标题一</h3>
<h4>标题一</h4>
<a href="http://www.qq.com">腾讯网</a>
<div id="content" class="default">
<p>段落</p>
<a href="http://www.baidu.com">百度</a>
<a href="http://www.cnblogs.com/SRIGT">我的博客</a>
<a href="test">测试</a>
<img src="./logo.ico" />
</div>
</body>
</html>

python 代码:

当标签使用不规范时,使用 xpath 爬取会报错

如:

<!-- 不规范 -->
<meta charset="utf-8">
<!-- 规范 -->
<meta charset="utf-8" />
from lxml import etree

et = etree.parse("test.html")
res1 = et.xpath('/html')
res2 = et.xpath("/html/body//a/text()") # 所有<a>标签的文本
res3 = et.xpath("/html/body/div/a[1]/text()") # 第1个<a>标签的文本
res4 = et.xpath("/html/body/div/a[@href='test']/text()") # 由属性值索引的文本
print(res4)
print() links = et.xpath("/html/body/div/a")
for link in links:
res5_1 = link.xpath("./text()")
print(res5_1)
res5_2 = link.xpath("./@href")
print(res5_2) res6 = et.xpath("/html/body/div/a/@href")
print(res6)

End

Python 爬虫之 xpath的更多相关文章

  1. python爬虫:XPath语法和使用示例

    python爬虫:XPath语法和使用示例 XPath(XML Path Language)是一门在XML文档中查找信息的语言,可以用来在XML文档中对元素和属性进行遍历. 选取节点 XPath使用路 ...

  2. Python爬虫之xpath语法及案例使用

    Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...

  3. 非常全的一份Python爬虫的Xpath博文

    非常全的一份Python爬虫的Xpath博文 Xpath 是 python 爬虫过程中非常重要的一个用来定位的一种语法. 一.开始使用 首先我们需要得到一个 HTML 源代码,用来模拟爬取网页中的源代 ...

  4. 【python爬虫】Xpath

    一.xml是什么 1.定义:可扩展标记性语言 2.特点:xml的是具有自描述结构的半结构化数据. 3.作用:xml主要设计宗旨是用来传输数据的.他还可以作为配置文件. 二.xml和html的区别 1. ...

  5. python爬虫中XPath和lxml解析库

    什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...

  6. python爬虫--用xpath爬豆瓣电影

    步骤 将目标网站下的页面抓取下来 将抓取下来的数据根据一定规则进行提取   具体流程 将目标网站下的页面抓取下来 1. 倒库 import requests 2.头信息(有时候可不写) headers ...

  7. Python爬虫:Xpath语法笔记

    一.选取节点 常用的路劲表达式: 表达式 描述 实例   nodename 选取nodename节点的所有子节点 xpath(‘//div’) 选取了div节点的所有子节点 / 从根节点选取 xpat ...

  8. python爬虫之xpath的基本使用

    一.简介 Xpath是一门在XML文档中查找信息的语言.Xpath可用来在XML文档中对元素和属性进行遍历.Xpath是W3C XSLT标准的主要元素,并且XQuery和XPointer都构建于XPa ...

  9. Python 爬虫知识点 - XPath

    http://cuiqingcai.com/2621.html 一.基础介绍 <bookstore> <book> <title>Harry Potter</ ...

  10. python爬虫-使用xpath方法

    #coding=utf-8 import re from lxml import etree import requests response = requests.get("http:// ...

随机推荐

  1. python 生成虚拟环境requirement.txt

    # 在项目根目录中,打开终端执行以下命令 # 生成 requirements.txt 文件 pip3 freeze > requirements.txt # 安装依赖文件 pip3 instal ...

  2. iMindMap 10 的使用体验 + 讯飞输入法 + windows防火墙 (完美)

    这个软件 最终的效果非常好. 但是有一个硬bug,就是输入光标 搜狗输入法和百度输入法,输入法获取不到,导致输入中文的时候,文字候选框位置特别远. 如果是纯英文 输入使用,就没有这个bug. 总结: ...

  3. 记一次由虚假唤醒产生的bug

    记一次由虚假唤醒产生的bug 用int a代表产品数量最少0最多10,有两个生产者,三个消费者,用多线程和条件变量模拟生产消费过程: #include <sys/types.h> #inc ...

  4. 键鼠共享工具使用(软KVM)-barrier(symless开源版)

    作用:通过软件方式,实现KVM,即一套键盘鼠标可以控制多台电脑,并可以进行粘贴板共享. 1.安装 打开https://github.com/debauchee/barrier,进releases下载对 ...

  5. Java8的核心功能就是Lambda和Streaming API

    Java8的核心功能就是Lambda和Streaming API

  6. 在LabVIEW中编程运行可执行程序

    以下文字来自于 https://knowledge.ni.com/KnowledgeArticleDetails?id=kA03q000000YGhVCAW&l=en-US 翻译来自于Chat ...

  7. dbvisivuser连oracle数据库报错没有权限

    原因:数据库从11g升级为19c了 解决:ojdbc.jar也要换成最新的,导致报错的旧jar包2M大小,换成新jar包3M大小.替换jar包要将 dbvisivuser的tool driverMan ...

  8. 微信小程序获取手机号流程

    小程序中获取手机号前提 小程序需企业认证,才可以获取用户的手机号,个人开发者是不能获取的 哔哔下 官方文档给出需先登录才可获取手机号 传送门 思路为:login登录获取code-->code传给 ...

  9. 再见了 Pages

    再见 Pages 之前一直用 GitHub Pages + Hexo 写博客,但是这段时间又出现了无法访问的问题,非常闹心,于是想把博客迁移到博客园,继续简简单单地写东西 挺感激 Pages ,这个博 ...

  10. APP探索之iAPP

    APP探索之iAPP 1.基本作用 iAPP是一个手机上的应用,可以用于快速设计手机应用,基本免费.使用的语言好像是自创的脚本语言.无聊时可以用iAPP做一些简单的训练,可以练习文件和数据的操作.对于 ...