爬虫xpath基本使用方法

一、基本介绍

xpath全称XML Path Language,即XML路径语言,用于定位XML文档中某个部分位置的语言

        1.主要用途        

                定位节点:通过节点名称、节点路径、节点属性等方式定位

                选择节点:根据节点的属性、节点的文本内容、节点的位置等条件选择

                提取数据:通过定位和选择节点,从XML文档中提取所需要的数据,并进一步分析

二、xpath语法-基础语法

1.常用路径表达式

表达式说明
/如果写在最前面则从根节点选取,否则是当前节点下的子节点
//可以获得所有标签节点
.当前节点
..当前节点的父节点
text()一个开闭标签的文本内容
@某个标签节点的属性

举例说明

  • /title:根节点下的所有title标签
  • //div:根节点下的所有div标签
  • ./div[@class="text"].text():当前节点下,属性class="text"的所有div的文本内容

三、xpath语法-谓语

表达式举例

表达式结果
//bookstore/book[1]选取属于 bookstore 子元素的第一个book 元素
//bookstore/book[last()]选取属于 bookstore子元素的最后一个 book 元素
//bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素
//bookstore/book[position()>1]选择所有 bookstore 下面的 book元素,从第二个开始选择
//div[contains(@i,“test_div_”)]找到所有 div节点,且id包含了"test_div_"
//div[@class=“pagination”]//span[contains(text(),“下一页”)]先找到class="pagination"的 div,再找其子节点span,且文本内容包下一页

四、选取多个路径

通过 xpath 的运算符|,选取多个路径,表示多个路径的并集

路径举例

路径表达式说明
//book/title | //book/price选取 book元素下的所有title和 price元素
//title | //price选取文档中的所有title和 price元素
/bookstore/book/title | //price选取属于 bookstore节点下 book 节点下的所有 title节点 以及文档中所有的 price 元素

五、什么是Python lxml?

        lxml是一个用于处理XML和HTML文档的Python库。lxml提供了一种简单而高效的方式来解析、构建、修改和查询XML和HTML文档。无论是在Web开发、数据抓取、数据清洗还是数据处理方面,lxml都是一个非常有用的工具。

  • 安装lxml

                要开始使用lxml,首先需要安装它,可以使用pip来安装lxml:

pip install lxml

                安装完成后,可以开始在Python项目中使用lxml。

  • 基本用法

        解析XML和HTML文档:
                lxml可以解析XML和HTML文档,将它们转换为Python中的元素树,以便进一步处理。

  • 利用Xpath定位元素

这里我们以解析HTML文档举例,lxml支持XPath查询,可以根据条件选择元素。

from lxml import etree
#这里是以一个HTML文档
html_data = '''
<div>
  <ul>
       <li class="item-0"><a href="link1.html">first item</a></li>
       <li class="item-1"><a href="link2.html">second item</a></li>
       <li class="item-inactive"><a href="link3.html"><span class="bold">third item</span></a></li>
       <li class="item-1"><a href="link4.html">fourth item</a></li>
       <li class="item-0"><a href="link5.html">fifth item</a>
   </ul>
</div>
'''
html=etree.HTML(html_data)
# 使用//返回一个列表,每一个元素都是Element类型
result=html.xpath('//li/a/text()')
# /@获得元素的属性值
result=html.xpath('//li/@class')
# 根据属性值获取元素内容
result=html.xpath('//li/a[@href="link1.html"]/text()')
# 返回所有li标签中的所有span标签中的文本
result=html.xpath('//li//span/text()')
# 返回所有li标签中的最后一元素中的a标签属性值
result=html.xpath('//li[last()]/a/@href')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值