数据解析——xpath解析

前言:xpath解析在爬虫中是较为常用的一个数据解析方式,以及在scrapy框架学习中也会再次用到,所以多少还是要会的

1.xpath解析原理

1.1. 实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中

1.2 2. 调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获

2. 环境安装

  • pip install lxml

3. 进行实例化

    - 将获取的html实例化
        - selector = etree.HTML(html)
        - 进行筛选 返回的式一个元素对象
        - value = selector.xpath(语法)
    - xpath('xpath表达式')

4. xpath 表达式

4.1 ‘/’ 用法

  • / : 表示从根节点开始定位 (一个html的最外面就是一个根节点) 注意:一个 / 表示的是一个层级,
    //: 表示可跨层级使用,也可以从任意位置开始

=============================================================================================

在这里插入图片描述

比如定位到一个上图中 title 的三种方法

from lxml import etree
    title1 = selector.xpath('/html/head/title')
    title2 = selector.xpath('/html//title')  # 可跨越层级,即表示可以可跨多个标签
    title3 = selector.xpath('//title')
    print(title1)
    print(title2)
    print(title3)

在这里插入图片描述

这三种的输出结果都是一样的,你细品!!!

4.2 属性定位

使用属性定位时要用@
在这里插入图片描述

直接定位到div标签下class=test那的写法:

r = selector.xpath('//div[@class="test"]')

4.3 索引定位

在这里插入图片描述

在该标签下若要获取箭头所指该怎么办?
这就需要索引定位了
注意这里的索引是从1开始的

 r = selector.xpath('//div[@class="test"]/ul/li[2]')

4.4 定位后的取操作

===============================================

4.4.1 取文本

  • /text() 获取的是标签中直系的内容
  • //text() 获取的是非直系的文本内容(即该标签下的所有的文本内容)

在这里插入图片描述
比如还是刚刚那个就取他的文本

r = selector.xpath('//div[@class="test"]/ul/li[2]/a/text()')
print(r)

在这里插入图片描述

===============================================

4.4.2 取属性

- /@attrName 即标签内一个属性名的内容
使用属性取值时要固定使用@

在这里插入图片描述
比如获得上图中的url的使用方法为

r = selector.xpath('//div[@class="dance"]/img/@src')
print(r)

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值