一个python爬虫案例,带你掌握xpath数据解析方法!

数据解析之Xpath解析(超详细定位) XPath(XML Path Language)是一种XML的查询语言,他能在XML树状结构中寻找节点。XPath 用于在 XML 文档中通过元素和属性进行导航xml是一种标记语法的文本格式,xpath可以方便的定位xml中的元素和其中的属性值。lxml是python中的一个第三方模块,它包含了将html文本转成xml对象,和对对象执行xpath的功能表达式说明举例从根节点开始选取//从任意节点开始选取//input选取当前节点..选取当前节点的父节点//input/.. 阅读详情

文章目录

  • xpath基本概念
  • xpath解析原理
  • 环境安装
  • 如何实例化一个etree对象:
  • xpath(‘xpath表达式’)
  • xpath爬取58二手房实例
  • 爬取网址
  • 完整代码
  • 效果图
  • xpath图片解析下载实例
  • 爬取网址
  • 完整代码
  • 效果图
  • xpath爬取全国城市名称实例
  • 爬取网址
  • 完整代码
  • 效果图
  • xpath爬取简历模板实例
  • 爬取网址
  • 完整代码
  • 效果图
  • 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。

    很多已经做案例的人,却不知道如何去学习更加高深的知识。

    那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!

    QQ群:701698587

xpath基本概念
xpath解析:最常用且最便捷高效的一种解析方式。通用性强。

xpath解析原理
1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中
2.调用etree对象中的xpath方法结合xpath表达式实现标签的定位和内容的捕获。
环境安装

pip install lxml



如何实例化一个etree对象:

from lxml import etree

1.将本地的html文件中的远吗数据加载到etree对象中:

etree.parse(filePath)



2.可以将从互联网上获取的原码数据加载到该对象中:

etree.HTML(‘page_text’)


xpath(‘xpath表达式’)
- /:表示的是从根节点开始定位。表示一个层级
- //:表示多个层级。可以表示从任意位置开始定位
- 属性定位://div[@class='song'] tag[@attrName='attrValue']
- 索引定位://div[@class='song']/p[3] 索引从1开始的
- 取文本:
    - /text()获取的是标签中直系的文本内容
    - //text()标签中非直系的文本内容(所有文本内容)
- 取属性:
    /@attrName    ==>img/src

xpath爬取58二手房实例
爬取网址
https://xa.58.com/ershoufang/完整代码

from lxml import etree
import requests

if __name__ == '__main__':
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
    }
    url = 'https://xa.58.com/ershoufang/'
    page_text = requests.get(url=url,headers=headers).text
    tree = etree.HTML(page_text)
    div_list = tree.xpath('//section[@class="list"]/div')
    fp = open('./58同城二手房.txt','w',encoding='utf-8')
    for div in div_list:
        title = div.xpath('.//div[@class="property-content-title"]/h3/text()')[0]
        print(title)
        fp.write(title+'\n'+'\n')

在这里插入图片描述


xpath图片解析下载实例
爬取网址
https://pic.netbian.com/4kmeinv/完整代码
 

import requests,os
from lxml import etree

if __name__ == '__main__':
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
    }
    url = 'https://pic.netbian.com/4kmeinv/'
    page_text = requests.get(url=url,headers=headers).text
    tree = etree.HTML(page_text)
    li_list = tree.xpath('//div[@class="slist"]/ul/li/a')
    if not os.path.exists('./piclibs'):
        os.mkdir('./piclibs')
    for li in li_list:
        detail_url ='https://pic.netbian.com' + li.xpath('./img/@src')[0]
        detail_name = li.xpath('./img/@alt')[0]+'.jpg'
        detail_name = detail_name.encode('iso-8859-1').decode('GBK')
        detail_path = './piclibs/' + detail_name
        detail_data = requests.get(url=detail_url, headers=headers).content
        with open(detail_path,'wb') as fp:
            fp.write(detail_data)
            print(detail_name,'seccess!!')

在这里插入图片描述
xpath爬取全国城市名称实例
爬取网址
https://www.aqistudy.cn/historydata/完整代码

import requests
from lxml import etree

if __name__ == '__main__':
    url = 'https://www.aqistudy.cn/historydata/'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
    }
    page_text = requests.get(url=url,headers=headers).content.decode('utf-8')
    tree = etree.HTML(page_text)
    #热门城市   //div[@class="bottom"]/ul/li
    #全部城市   //div[@class="bottom"]/ul/div[2]/li
    a_list = tree.xpath('//div[@class="bottom"]/ul/li | //div[@class="bottom"]/ul/div[2]/li')
    fp = open('./citys.txt','w',encoding='utf-8')
    i = 0
    for a in a_list:
        city_name = a.xpath('.//a/text()')[0]
        fp.write(city_name+'\t')
        i=i+1
        if i == 6:
            i = 0
            fp.write('\n')
    print('爬取成功')

在这里插入图片描述


xpath爬取简历模板实例
爬取网址
https://sc.chinaz.com/jianli/free.html完整代码

import requests,os
from lxml import etree

if __name__ == '__main__':
    url = 'https://sc.chinaz.com/jianli/free.html'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
    }
    page_text = requests.get(url=url,headers=headers).content.decode('utf-8')
    tree = etree.HTML(page_text)
    a_list = tree.xpath('//div[@class="box col3 ws_block"]/a')
    if not os.path.exists('./简历模板'):
        os.mkdir('./简历模板')
    for a in a_list:
        detail_url = 'https:'+a.xpath('./@href')[0]
        detail_page_text = requests.get(url=detail_url,headers=headers).content.decode('utf-8')
        detail_tree = etree.HTML(detail_page_text)
        detail_a_list = detail_tree.xpath('//div[@class="clearfix mt20 downlist"]/ul/li[1]/a')
        for a in detail_a_list:
            download_name = detail_tree.xpath('//div[@class="ppt_tit clearfix"]/h1/text()')[0]
            download_url = a.xpath('./@href')[0]
            download_data = requests.get(url=download_url,headers=headers).content
            download_path = './简历模板/'+download_name+'.rar'
            with open(download_path,'wb') as fp:
                fp.write(download_data)
                print(download_name,'success!!')

在这里插入图片描述

XPath详解教程 目录 1. XPath 概览 2. XPath 常用规则 3. 准备工作 4.实例引入 5.所有节点 6. 子节点 7.父节点 8.属性匹配 9.文本获取 10.属性获取 11.属性多值匹配 12. 多属性匹配 13.按序选择 14. 节点轴选择 结语 阅读详情

相关推荐

MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)

本文简单介绍了MQTT的基础知识和使用方法,以蓝牙WIFI双模芯片W801作为硬件设备,接入到华为云。

weixin_50622833的博客 1万+

xpath定位

基本语法 from lxml import etree 如果这种方式报错,使用下面方式导入etree from lxml.html import etree tree = etree.HTML(respone) # 通过标签定位 title_tag = tree.xpath('/html/head/title') # 绝对路径 title_tag = tree.xpath('//title') # 相对路径 # 属性定位:根据标签的属性定位标签://tagName[@attrName="attrVa

qq_34577961的博客 1304

【OpenCV】背景替换(opencv、python),照片、证件照的背景替换(抠图)

目录步骤:导入库1、读入将要抠图的图片2、create一个带颜色域的mask3、通过mask使得原图只显示汽车,即抠出所需要的部分4、将要替换掉的图像resize或裁剪到和上述图片一样的大小5、将该图片预留出将要重叠上的部分,即将mask部分改为(0,0,0)6、通过和运算使得两部分图片mask部分替换7、最后保存图片 步骤: 导入库 import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np imp

weixin_41729258的博客 4362

python爬虫-数据解析(xpath)

文章目录xpath基本概念xpath解析原理环境安装如何实例化一个etree对象:xpath(‘xpath表达式’)xpath爬取58二手房实例爬取网址完整代码效果图xpath图片解析下载实例爬取网址完整代码效果图xpath爬取全国城市名称实例爬取网址完整代码效果图xpath爬取简历模板实例爬取网址完整代码效果图 xpath基本概念 xpath解析:最常用且最便捷高效的一种解析方式。通用性强。 xpath解析原理 1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中 2.调用et

qq_43710889的博客 1万+

LiveGBS流媒体平台GB/T28181实战指南:海康NVR物联网卡摄像头注册失败全链路排查与抓包技巧

本文详细解析了LiveGBS流媒体平台中海康NVR物联网卡摄像头注册失败的常见问题及解决方案。通过全链路排查与抓包技巧,包括物联网卡配置、多网卡冲突处理、防火墙设置等,帮助用户快速定位并解决GB/T28181协议下的设备注册难题,提升流媒体平台部署效率。

weixin_29290947的博客 492

ADXL355 STM32 HAL 库 SPI 驱动实战:从零构建高精度加速度数据采集系统

本文详细介绍了如何使用STM32 HAL库通过SPI接口驱动ADXL355高精度加速度计,构建稳定可靠的数据采集系统。从硬件连接到寄存器配置,再到数据采集与处理,提供了完整的实战代码和优化技巧,特别适合工业级振动监测等应用场景。

weixin_28738397的博客 324

xpath_邓治安

from lxml import etree s=""" <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="eng">Harry Potter</title> <price>29.99</price> </book&gt.

m0_57120802的博客 327

Moviepy自动化剪辑视频中的广告

本教程展示了如何使用 Python 中的 MoviePy 库,通过检测和剪辑广告段落来实现视频内容的清洁播放。通过广告检测算法和 MoviePy 剪辑功能的结合,可以自动化处理视频,极大提升编辑效率。在学习和应用中,理解广告检测的原理及其实现方法尤为重要,以便针对不同类型的视频进行调整。此外,MoviePy 的灵活性使其适用于多种视频编辑场景,适合自动化内容制作与优化。

Mr数据杨 3413

四个Python爬虫案例,带你掌握xpath数据解析方法!

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。//text()标签中非直系的文本内容(所有文本内容)

m0_59236127的博客 2306

Android Activity面试题最全解析(5万字长文)

Intent是Android中用于启动活动、服务或广播的一种消息对象。它包含了一系列键值对数据,用于描述操作的目的以及需要传递的信息。IntentString:字符串intfloatlong:基本数据类型Parcelable:实现了Parcelable接口的对象:实现了接口的对象示例代码如下:Java深色版本1// 创建Intent并传递数据");67// 启动新的Activity是一个XML标签,用于定义ActivityService或可以响应的Intent类型。它包含了。

大模型大数据攻城狮的专栏 803

对偶分解算法详解及其Python实现

对偶分解算法是一种广泛应用于求解凸优化问题的有效方法,尤其在大规模数据处理和分布式计算中展现出强大的实用性。在许多实际应用中,直接求解原始问题可能由于计算复杂度过高、资源受限或问题规模过大而变得不可行。这时,对偶分解方法为我们提供了一种高效的替代方案。对偶分解算法的核心思想是将复杂的原问题转化为其对应的拉格朗日对偶问题。通过引入拉格朗日乘子并构造对偶函数,该方法在一定程度上简化了问题的求解过程。特别是,对于包含多个约束条件的大规模优化问题,对偶分解可以将原问题分解为若干个小规模、相互独立的子问题。

闲人编程的博客 1752

一个Python爬虫案例,带你掌握xpath数据解析方法!

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。xpath解析:最常用且最便捷高效的一种解析方式。

m0_74942241的博客 653

芒果YOLO11改进22:检测头Head篇:即插即用|《新颖高效AsDDet检测头》独一无二的结构改进,公开数据集mAP高效涨点,即插即用|检测头新颖改进,性能高效涨点,全网首发独一份

检测头Head篇:即插即用|《新颖高效AsDDet检测头》独一无二的结构改进,公开数据集mAP高效涨点,即插即用|检测头新颖改进,性能高效涨点,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 748

python爬虫的简单复习1【使用etree进行XPath解析】

使用etree进行XPath解析

m0_58086930的博客 3492

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

xpath基本案例(Python)

**#相关介绍:xpath是在XML文档中搜索内容的一门语言;html是xml的一个子集。 一、首先安装lxml模块,这里以pycharm开发环境为例,在Terminal命令行输入pip install lxml 出现如下页面即是安装成功。 1.再介入案例之前,首先看一个小例子: (1)先从lxml模块导入etree包; (2)xml可以看作是网页源代码(相关知识html标签语言) (3)第20行拿到页面源代码(调用XML方法); (4)调用xpath方法。 输出结果如下: 二、关于xpath基本

qq_53272273的博客 5504

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python网络编程实战-使用etree进行网页数据的解析,etree.xpath的使用

etree是基于ElementTree API的一种XML解析方式。相较于SAX,DOM而言,具有代码可用性好,速度快,消耗内存少等特点。Python的lxml库中的etree,提供了ElementTree API定义的接口。

记录和分享程序人生的点点滴滴 5184

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

xpath基础用法

这些是XPath的基本用法。XPath还支持更高级的功能,例如数值比较、节点集合操作和函数的使用。具体的用法取决于你的XML文档的结构和你想要查询的数据。XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的查询语言。2.1通过路径选择节点:/ 表示从根节点开始,// 表示在整个文档中查找。4.1使用 * 通配符匹配任意元素,| 表示多个路径。1.2选取特定节点:nodeName。1.1.选取所有节点:*

qq_74585474的博客 601

05 Python 网络爬虫 Xpath实战

要求:从搜狐新闻网站上爬取新闻列表并将每篇新闻的标题和链接保存到本地的news.txt文件中。

zmxnn的博客 863

xpath定位简单应用

获取字段标签属性(href) li=tree.xpath("//div[@class='article']//li//a/@href")[0] 可以看到href在div[@class='article']里面,直接//定位, //div[@class='article'] 第二步接着//定位到li(因为li在第一步定位的第n层,不是在下一层级用/定位不到) //div[@class='article']//li) 第三步//接着定位a类似第二步想法,最后直接/@href定位属性url(相当于在a的下

qq_45664532的博客 1142

python爬虫lxml xpath测试

xpath测试1: main.py """=== coding: UTF8 ===""" from lxml import etree xml = """ <book> <id>1</id> <name>春风</name> <price>1.56</price> <nick>万里</nick> <author> <nick i

星如雨落 304

python爬虫定位元素_[python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)...

一. 定位元素方法官网地址:http://selenium-python.readthedocs.org/locating-elements.html这里有各种策略用于定位网页中的元素(locate elements),你可以选择最适合的方案,Selenium提供了一下方法来定义一个页面中的元素:find_element_by_idfind_element_by_namefind_element_...

weixin_39592026的博客 176

python爬虫:使用xpath基础+实例

Xpath 是高效简单,在XML文档中搜索内容的一门语言,最初是用来搜寻 XML 文档的,但是HTML语言是XML的一个子集,它同样适用于 HTML 文档的搜索。在Python爬虫中,我们经常通过安装lxml库,利用xpath解析这种高效便捷的方式来提取信息。

m0_73716246的博客 9838

爬虫xpath及实例

xpath的使用方法 tree.xpath(/html/body/div) 逐级定位 tree.xpath(/html//div) 两个//可以跨级定位 tree.xpath(//div[@class=“song”]/p) 可以按照属性值定位 tree.xpath(//div[@class=“song”]/p[3]) 可以定位到具体第几个标签 tree.xpath(//div[@class=“song”]/p[3]/a/text()) 获取直系 tree.xpath(//div[@class=“song”]

qq-1343330453 2669
上一篇: python脚本控制安卓手机,可以用来做什么你知道吗?
下一篇: 女友闹别扭不用担心,python做个软件轻松哄好
Python编程_可乐
博客等级 码龄6年 917粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值