python数据XPath使用案例详解

 更新时间:2021年09月29日 14:40:20   作者:小缘喵~  
xpath是最常用且最便捷高效的一种解析方式,通用型强,其不仅可以用于python语言中,还可以用于其他语言中,数据解析建议首先xpath

XPath

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath使用方法

xpath解析原理:

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

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

安装lxml

pip install -i https://mirrors.aliyun.com/pypi/simple/ lxml

from lxml import etree
tree = etree.parse('./tree.html')  #从本地加载源码,实例化一个etree对象。必须是本地的文件,不能是字符串
tree = etree.HTML(源码)           #从互联网加载源码,实例化etree对象
#  / 表示从从根节点开始,一个 / 表示一个层级,//表示多个层级
r = tree.xpath('//div//a')       #以列表的形式返回div下的所有的a标签对象的地址
r = tree.xpath('//div//a')[1]    #返回div下的第二个a标签对象地址
r = tree.xpath('//div[@class="tang"]')   #以列表的形式返回tang标签地址
r = tree.xpath('//div[@class="tang"]//a') #以列表的形式返回tang标签下所有的a标签地址
#获取标签中的文本内容
r = tree.xpath('//div[@class="tang"]//a/text()') #以列表的形式返回所有a标签中的文本
#获取标签中属性值
r = tree.xpath('//div//a/@href')   ##以列表的形式返回所有a标签中href属性值

tree.html

<html lang="en">
    <head>
      <meta charset="utf-8" />
      <meta name="theme-color" content="#ffffff"></meta>
      <title>xpaht测试</title>
    </head>
    <body>
        <div>
            <p>百里守约</p>
        </div>
        <div class="song">
            <p>前程似锦</p>
        </div>
        <div class="song">
            <p>前程似锦2</p>
        </div>
        <div class="ming">  #后面改了名字
            <p>以梦为马</p>
        </div>  
        <div class="tang">
            <ul>
                <li><a href='http://123.com' title='qing'>清明时节</a></li>
                <li><a href='http://ws.com' title='qing'>秦时明月</a></li>
                <li><a href='http://xzc.com' title='qing'>汉时关</a></li>
            </ul>
        </div>
      <flink-root></flink-root>
        <script type="text/javascript" src="runtime.0dcf16aad31edd73d8e8.js"></script>
        <script type="text/javascript" src="es2015-polyfills.923637a8e6d276e6f6df.js"></script>
        <script type="text/javascript" src="polyfills.bb2456cce5322b484b77.js"></script>
        <script type="text/javascript" src="main.8128365baee3dc30e607.js"></script>
    </body>
</html>

案例—58二手房

将页面中的房源名称解析出来,即将title值解析出来就行

思路

获取房源名称所在的url,并获取其响应数据

数据解析,构造xpath表达式。提取目标数据

import requests
from lxml import etree
url = "https://bj.58.com/ershoufang/p1/"
headers={
    'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36'
}
pag_response = requests.get(url,headers=headers,timeout=3).text
#实例化一个etree对象
tree = etree.HTML(pag_response)
r = tree.xpath('//span[@class="content-title"]/text()') #获取所有//span标签为"content-title"的文本内容
print(r)

Tips:我们使用xpath进行数据解析时,不能直接看元素就进行构造xpath表达式,以为很多情况下从浏览中看的元素结构和爬取下来的源码结构不一样。所以正确方法是先将源码爬下来再观察进行构造xpath。

如下浏览器中的元素结构和爬取的元素结构就不一样。如果按照浏览器汇总的元素来构造xpath表达式,则不会解析成功!

以上就是python数据XPath使用案例详解的详细内容,更多关于python数据XPath使用的资料请关注脚本之家其它相关文章!

相关文章

  • 一文带你搞懂Python中的描述符(Descriptor)

    一文带你搞懂Python中的描述符(Descriptor)

    Python是一种动态类型语言,这意味着我们可以在运行时更改对象的结构,这种灵活性有时可能会导致问题,例如我们可能无意中改变了一个属性的值,为了解决这些问题,Python提供了一个强大的特性:描述符,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • 利用numpy和pandas处理csv文件中的时间方法

    利用numpy和pandas处理csv文件中的时间方法

    下面小编就为大家分享一篇利用numpy和pandas处理csv文件中的时间方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 浅谈Django中view对数据库的调用方法

    浅谈Django中view对数据库的调用方法

    今天小编就为大家分享一篇浅谈Django中view对数据库的调用方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python基于pyDes库实现des加密的方法

    python基于pyDes库实现des加密的方法

    这篇文章主要介绍了python基于pyDes库实现des加密的方法,结合实例形式较为详细的分析了pyDes库的下载、安装及使用pyDes库进行加密的相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • python实现简单银行管理系统

    python实现简单银行管理系统

    这篇文章主要为大家详细介绍了python实现简单银行管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • python使用ddt过程中遇到的问题及解决方案【推荐】

    python使用ddt过程中遇到的问题及解决方案【推荐】

    在使用DDT数据驱动+HTMLTestRunner输出测试报告时遇到过2个问题,没个问题都很奇葩,下面小编通过本文给大家分享python使用ddt过程中遇到的问题及解决方案,需要的朋友参考下吧
    2018-10-10
  • Flask-SocketIO服务端安装及使用代码示例

    Flask-SocketIO服务端安装及使用代码示例

    这篇文章主要介绍了Flask-SocketIO服务端安装及使用代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python 写入训练日志文件并控制台输出解析

    Python 写入训练日志文件并控制台输出解析

    这篇文章主要介绍了Python 写入训练日志文件并控制台输出解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python获取协程返回值的四种方式详解

    Python获取协程返回值的四种方式详解

    这篇文章主要为大家介绍了Python中获取协程返回值的四种方法的示例代码,文中的代码详细易懂,对我们学习Python有一定的帮助,需要的朋友可以了解一下
    2021-12-12
  • jupyter 导入csv文件方式

    jupyter 导入csv文件方式

    这篇文章主要介绍了jupyter 导入csv文件方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论