python爬虫xpath教程_使用 Xpath 进行爬虫开发

使用 Xpath 进行爬虫开发

Xpath( XML Path Language, XML路径语言),是一种在 XML 数据中查找信息的语言,现在,我们也可以使用它在 HTML 中查找需要的信息。

既然谈到 Xpath 是一门语言,当然它就会有自己的一些特定的语法。我们这里罗列一些经常使用的语法,熟悉下面的基本语法之后,就能满足我们日常的爬虫开发所用。

本小节主要内容:

Xpath的基本概念

Xpath的基本语法

Xpath实战

学习目标:

熟练掌握常用的 Xpath 的基本操作

1. 开发前的准备

前面我们介绍的 XPath 基本的语法和基本操作,下面我们通过 lxml 库,来熟悉一下 XPath 的使用。

首先,我们需要一个测试文件,文件如下,文件名为 xpath_test.xml:

2. 基本语法

2.1 节点之间的关系

父节点:每个元素都有一个父亲节点;

子节点:每个元素节点可以有零个,一个或者多个父亲节点;

兄弟节点:相同父亲节点的节点;

先辈节点:一个元素的父亲节点的父亲节点;

后辈节点:一个元素的子节点的子节点。

表达式基本语法

表达式

功能简介

node

选取node下面的所有的节点

/node

斜杠是代表绝对路径,这个表达式语法的意思就是选择根上的node

//node

选择所有的node的节点,与XML的位置无关

.

选择当前节点

选择当前节点的父亲节点

node/child

选取node子节点的所有的child元素

node//child

选取所有后备节点的chiid信息

//@href

选取所有的href的属性

2.2 谓语与通配符

表达式

功能简介

/books/python[1]

选取books子元素中的第一个python元素

/books/python[last()]

选取books子元素中的最后一个元素

/books/python[position()<10]

选取books子元素的前9个元素

.

选择当前节点

选择当前节点的父亲节点

node/child

选取node子节点的所有的child元素

node//child

选取所有后备节点的chiid信息

//@href

选取所有的href的属性

3. 开发案例

开发案例一:

从xml中查找出所有的’li’标签

from lxml import etree

emt = etree.parse('text.xml')

rst = emt.xpath('//li')

运行结果如下图所示:

5e7cc397083827bb08260134.jpg

开发案例二:

从xml中查找出所有的’li’标签的所有class

from lxml import etree

emt = etree.parse('text.xml')

rst = emt.xpath('//li/@class')

运行结果如下图所示:

5e93c6c40897b6df08260134.jpg

开发案例三:

从xml中查找出所有的’li’标签下面的href为a.html的标签

from lxml import etree

emt = etree.parse('text.xml')

rst = emt.xpath('//li/a[@href="a.html"]')

运行结果如下图所示:

5e93c6cb089ca45908350136.jpg

4. 小结

XPath 是一种查询语言,它是通过路径来寻找相应的信息,正如它的英文名称 path 一样,通过不同种X路径,最终找到自己需要的信息。通过 XPath,我们不但可以搜索 XML,也可以搜索 HTML。

通过案例,我们基本熟悉了 XPath 的基本使用,这也为我们后面学习 BeautifulSoup 打下了良好的基础,XPath 为我们从复杂的文档中,快速定位信息提供了良好的支持,也为我们后面处理和整理爬虫爬下来的信息奠定了根基。

原文地址:https://blog.csdn.net/q7825103/article/details/105379906

文章来源与用户投稿或网络采集,如果您是本文的作者,发现版权或转载方式问题请右侧邮箱联系管理员。

670人推荐

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值