详解xpath

什么是xpath

xpath其实就是一个html标签定位器,通过一些表达式定位到你想提取信息的标签位置,从而方便做进一步解析和提取。

xpath解析流程

1. 通过etree.HTML("网页源码")方法获取一个etree对象
2. 使用xpath定位器进行标签定位
3. 使用xpath进行属性和文本的提取

xpath表达式

表达式描述
nodename选取此节点的所有子节点。
/从根节点来选择元素。
//从匹配选择的当前节点来对文档中的节点进行选择。
.选取当前节点。
选取当前节点的父节点。
@选取属性。

例如
html源码

<?xml version="1.0" encoding="UTF-8"?> 
<bookstore> 

<book>
 <title lang="eng">Harry Potter</title> 
<price>29.99</price> 
</book> 

<book> 
<title lang="eng">Learning XML</title>
 <price>39.95</price>
 </book> 

</bookstore>
路径表达式选取结果
bookstore选取bookstore的所有子节点
/bookstore选取根节点bookstore
bookstore/book选取以bookstore为根的所有book子元素
//book选取所有的book子元素,而不管他们在文档中的位置
bookstore//book选取属于bookstore元素的后代的所有book元素,而不管他们位于bookstore下的什么位置
//@lang选取名为 lang 的所有属性。

通配符

通配符描述
*匹配任何元素结点
@*匹配任何属性结点
node()匹配任何类型结点

例如

路径表达式选取结果
/bookstore/*选取 bookstore 元素的所有子元素。
//*选取文档中的所有元素。
//title[@*]选取所有带有属性的 title 元素。

以爬取豆瓣书籍top250实战项目为例:

1、通过etree.HTML(“网页源码”)方法获取一个etree对象

response = requests.get(url, headers=headers, timeout=10)
html = etree.HTML(response.text)

2、使用xpath定位器进行标签定位
源码:

在这里插入图片描述

books = html.xpath('//tr[@class="item"] ')

3、使用xpath进行属性和文本的提取

html源码:

<div class="pl2"> <a href="url" title="红楼梦">红楼梦 </div>
xpath提取书名
books_name = html.xpath('//div[@class="pl2"]/a/@title')

html源码:

<span class="rating_nums">9.6</span> text()方法输出该html标签的文本信息
xpath提取评分
rating_nums = html.xpath('//span[@class="rating_nums"]/text()')

参考资料:菜鸟教程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值