python数据XPath使用案例详解
作者:小缘喵~ 发布时间:2023-07-28 15:24:24
标签: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表达式,则不会解析成功!
来源:https://blog.csdn.net/qq_44159028/article/details/120527437
0
投稿
猜你喜欢
- MooTools 1.2介绍原文地址:30 Days of Mootools 1.2 Tutorials - Day 1 - Intro t
- 对于注入而言,错误提示是极其重要。所谓错误提示是指和正确页面不同的结果反馈,高手是很重视这个一点的,这对于注入点的精准判断至关重要。本问讨论
- /usr/sbin/groupadd mysql/usr/sbin/useradd -g mysql mysqlunzip mysql-5.
- 如下所示:fp = open(''test2.txt','w') #打开你要写得文件test2.tx
- 简介mplcursors包也可以为matplotlib提供交互式的数据光标(弹出式注释框),它的灵感来源于mpldatacursor包,可以
- 需求:用的是django的框架,想显示一个基本固定的页面,用到了form_layout上图的ROW中添加的是model中的字段名,可以显示对
- 掩码数组数据很大形况下是凌乱的,并且含有空白的或者无法处理的字符,掩码式数组可以很好的忽略残缺的或者是无效的数据点。掩码式数组由一个正常数组
- 非常不错,大家可以自己应用下。<% '//数据处理部分 dim Content,Num,I,st
- 为了将excel数据自动转换成所需要的erlang数据,听同事说使用python会很方便简单,就自学了两天python,写了一个比较粗糙的p
- 二分类问题可能是应用最广泛的机器学习问题。今天我们将学习根据电影评论的文字内容将其划分为正面或负面。一、数据集来源我们使用的是IMDB数据集
- 有助于效率的类型选择1、使你的数据尽可能小最基本的优化之一是使你的数据(和索引)在磁盘上(并且在内存中)占据的空间尽可能小。这能给出巨大的改
- 由于asp中是使用双引号作为字符串的开始和结束标志的,单一个字符串中的双引号出现次数大于两个时,程序就有可能运行错误。asp中是怎么输出引号
- 发送电子邮件在即时通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知、网站向用户发送一个激活账号
- 由于项目收尾,最近忙着做一些方法的优化,整理了一些分享给大家。 当页面内有许多控件,我们在需要清空其值的时候,一个个清空未免太麻烦。于是写了
- 最近在查看asp之家的访客统计时,发现访客使用firefox浏览器的占了10%-15%,而大部分的访客使用的是IE6,呵呵我也是用IE6。而
- class MyClass(): # 直接将属性定义在类中,这种属性称为 类属性 # 类属性可以通过实列对象和类对象
- 起步Pandas最初被作为金融数据分析工具而开发出来,因此 pandas 为时间序列分析提供了很好的支持。 Pandas 的名称来自于面板数
- 不知道大家有没有这样一个烦恼,“自己的电脑总是被别人使用,又不好意思设置密码”,所以利用python设计了一个程序来实现自由管控。功能虽然简
- 英文文档:len(s)Return the length (the number of items) of an object. The a
- 摘要:SELECT 语句可以帮助我们从MySQL中取出数据。SELECT 大概是 SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它