Python爬虫xpath详解

Python : Xpath简介及实例讲解 文章目录一、Xpath简介二、Xpath语法规则语法规则标签定位属性定位索引定位取文本内容三、语法规则练习 前言 本篇文章只是简单介绍一下Xpath及使用,总体来说比较基础。 一、Xpath简介 XPath(XML Path Language - XML路径语言),它是一种用来确定XML文档中某部分位置的语言。 Xpath以XML为基础,提供用户在数据结构树中寻找节点的能力,Xpath被很多开发者亲切的称为小型查询语言。 二、Xpath语法规则 xpath可以使用路径表达式在XML上选取节点,从而达到确 阅读详情

目录

一、xpath介绍

二、安装lxml

三、xpath解析原理

四、实例化一个etree对象

五、xpath表达式

六、爬虫实战


一、xpath介绍

xpath是一门在 XML 文档中查找信息的语言。最初是用来搜寻 XML 文档的,但同样适用于 HTML 文档的搜索。所以在做爬虫时完全可以使用 XPath 做相应的信息抽取。

二、安装lxml

lxml是Python的一个第三方解析库,支持HTML和XML解析,而且效率非常高,弥补了Python自带的xml标准库在XML解析方面的不足。

由于是第三方库,所以在使用 lxml 之前需要先安装:pip install lxml

三、xpath解析原理

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

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

四、实例化一个etree对象

 1.将本地的html文档中的源码数据加载到etree对象中:
        etree.parse(filePath)
 2.可以将从互联网上获取的源码数据加载到该对象中
        etree.HTML('page_text')

3.xpath('xpath表达式')

五、xpath表达式

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

六、爬虫实战

爬取二手房信息

import requests
from lxml import etree

# 使用xpath 爬取二手房信息

headers = {
    'User-Agent' :'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
url = 'https://bj.58.com/ershoufang/{0}/?PGTID=0d30000c-0000-1bdc-b1e5-d9efea8142e9&ClickID=1'
fp = open('58二手房.txt','w',encoding='utf-8')
for page in range(1,6):
    page = str(page)
    new_url = url.format(page)
    page_text = requests.get(url=new_url,headers=headers).text
    tree = etree.HTML(page_text)
    div_list = tree.xpath('//section[@class="list"]/div')
    for div in div_list:
        title = div.xpath('./a//h3/@title')[0]
        roomsAndHalls = div.xpath('./a//div[@class="property-content-info"]//span/text()')
        address = div.xpath('./a//div[@class="property-content-info property-content-info-comm"]//span/text()')
        house_year = div.xpath('./a//span[@class="property-content-info-tag"]/text()')
        total_price = div.xpath('./a//p[@class="property-price-total"]//span/text()')
        total_area = div.xpath('./a//p[@class="property-price-average"]//text()')
        roomsAndHalls = ''.join(roomsAndHalls)
        address = ''.join(address)
        house_year = ''.join(house_year)
        total_price = ''.join(total_price)
        total_area = ''.join(total_area)
        # print(title)
        # print(''.join(roomsAndHalls))
        # print(''.join(address))
        # print(''.join(house_year))
        print(title+'======>'+roomsAndHalls+'======>'+address+'======>'+house_year+'======>'+total_price+'======>'+total_area)
        fp.write(title+'======>'+roomsAndHalls+'======>'+address+'======>'+house_year+'======>'+total_price+'======>'+total_area+'\n')

其实xpath很简单,只要把表达式理解对就没啥大问题。详细代码:爬虫源码

Python中xpath解析 文章目录简介安装本文示例的html代码使用实例化etreexpth表达式定位根据层级定位根据属性进行定位根据id进行定位根据索引号进行定位取值获取文本获取属性实例 简介 XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。 安装 pip install lxml 本文示例的html代码 <div> <d 阅读详情

相关推荐

【Python网络爬虫笔记】11- Xpath精准定位元素

Xpath,能够帮助开发者从复杂的网页结构中精准地提取所需信息。本文将深入探讨 Xpath 在 Python 网络爬虫中的作用、常用方法、安装与使用步骤以及典型案例。

zi__you的博客 2700

Python爬虫实战之xpath解析

XPath是一门在XML文档中查找信息的语言,最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。所以在Python爬虫中,我们经常使用xpath解析这种高效便捷的方式来提取信息。

阿浩的博客 4万+

《Python3网络爬虫开发实战》第3章 网页数据的解析提取之XPath的使用

因此要确定li节点,需要同时考察class和name属性,一个条件是class属性里面包含li字符串,另一个条件是name属性为item字符串,这二者同时得到满足,才是li节点。这里我们使用*匹配,所以获取了所有的后续同级节点。第三次选择时,调用了attribute轴,可以获取所有属性值,其后跟的选择器还是*,代表获取节点的所有属性,返回值就是li节点的所有属性值。如果想获取某些特定子孙节点下的所有文本,则可以先选取特定的子孙节点,再调用text方法获取其内部的文本,这样可以保证获取的结果的整洁性。

略 1348

详细分析Python爬虫中的xpath(附Demo)

XPath(XML Path Language)是一种用于在XML文档中定位和选择节点的语言 在XML文档中通过路径表达式(path expression)来定位节点,这些路径描述了节点在层次结构中的位置

码农研究僧的博客 4351

Python3网络爬虫实战-28、解析库的使用:XPath

上一节我们实现了一个最基本的爬虫,但提取页面信息时我们使用的是正则表达式,用过之后我们会发现构造一个正则表达式还是比较的繁琐的,而且万一有一点地方写错了就可能会导致匹配失败,所以使用正则来提取页面信息多多少少还是有些不方便的。 对于网页的节点来说,它可以定义 id、class 或其他的属性,而且节点之间还具有层次关系,在网页中可以通过 XPath 或 CSS 选择器来定位一个或多个节点。那么在页面...

Python追梦 643

Python教程:一文了解使用Python处理XPath

XPath(XML Path Language)是一种用于在 XML 文档中查找信息的语言。它特别适用于解析和提取 XML 数据,而在 Python 中,我们可以使用 lxml 库来处理 XPath。本文将从基础知识开始,逐步深入,结合实战示例,让你能够熟练掌握 Python 中的 XPath。

旦莫的博客 1844

python网络爬虫:使用XPath进行网页解析

python网络爬虫 使用XPath进行网页解析 使用Xpath解析网页 Xpath介绍 XML路径语言(XML Path Language),它是一种基于XML的树状结构,在数据结构树中找寻节点,确定XML文档中某部分位置的语言。 需要把源文件转成树状结构,再对树状结构应用相应的xpath查询语句 基本语法 使用Xpath需要从lxml库中导入etree模块,还需使用HTML类对需要匹配的HTML对象进行初始化(XPath只能处理文档的DOM表现形式)。HTML类的基本语法格式如下。 lxml.e

m0_51877411的博客 6306

〖Python网络爬虫实战⑬〗- XPATH实战案例

我们通过学习了简单的Xpath操作,以及在另外一篇xpath的实战案例下,本文,继续分享一个关于xpath的实战案例。xpath最大的难点就是如何写下path后面的语法,我们要找到对应的节点,就可以了。

爱吃饼干的小白鼠的博客 1536

Python网络爬虫 二、Xpath语法详解

Python网络爬虫 二、Xpath语法详解 lxml是一个网页解析库。Xpath是一门在XML文档中查找信息的语言。Xpath课 用来在XML文档中对元素和属性进行遍历。 安装 pip install lxml 导入 import requests from lxml import etree 创建一个简单的html样本,注意其特点,层层嵌套。 htm = ''' <html> ...

Hanzoe的博客 821

〖Python网络爬虫实战⑫〗- XPATH语法介绍

前面我们实现了一个最基本的爬虫,但提取页面信息时使用的是正则表达式,过程比较烦琐,且万一有地方写错了,可能会导致匹配失败、所以使用正则表达式提取页面信息多少还是有些不方便.对于网页的节点来说、可以定义id,class或其他属性,而且节点之间还有层次关系,在网页中可以通过XPath或CSS选择器来定位一个或多个节点。那么、在解析页面时,利用XPath或CSS选择器提取某个节点,然后调用相应方法获取该节点的正文内容或者属性,不就可以提取我们想要的任意信息了吗?

爱吃饼干的小白鼠的博客 1016

Python 网络爬虫(三):XPath 基础知识

XPath(XML Path Language)是一种用于在XML和HTML文档中导航和定位节点的语言。它是W3C的标准,广泛应用于数据提取、文档解析和网页爬虫等领域。本文简要介绍了XPath的基本概念、节点选择、语法规则、轴和运算符。XPath是爬虫开发中非常重要的一部分,可以帮助我们准确定位和提取所需的数据。通过学习XPath的基本知识和实际应用,您将能够更加灵活和高效地开发网络爬虫。希望本文对您的学习和实践有所帮助!如有任何问题,请随时向我提问。

水滴的博客 7314

Python网络爬虫 - Xpath

Xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言, 可用来在XML和HTML文档中对元素和属性进行遍历。简单来说,我们的数据是超文本数据,想要获取超文本数据里面的内容,就要按照一定规则来进行数据的获取,这 种规则就叫做Xpath语法。

486

Halcon实战:5分钟搞定金属表面划痕检测(附完整代码解析)

本文提供了一份基于Halcon的金属表面划痕检测实战指南。通过核心的动态阈值算法,快速从图像中提取局部对比度异常区域,并结合形态学后处理与特征筛选,精准识别划痕。文章详解了从代码搭建、参数优化到工业场景适配的全流程,帮助工程师在五分钟内构建稳定高效的机器视觉检测方案。

weixin_29084231的博客 495

Python网络爬虫--数据提取xpath

一、xpath简介 XPath,即为XML路径语言(XMLPathLanguage),它是一种用来确定XML文档中某部分位置的语言。 xml和html异同: 都是玩标签,标签中都有属性 xml必须为双标签,html单双都可 xml标签为自定义,html标签都为内置 XPath 使用路径表达式在 XML 文档中进行导航 XPath 包含一个标准函数库 XPath 是 XSLT 中的主要元素 XPath 是一个 W3C 标准 二、xpath使用 xpath使用: 1.导入lxml.etree:from lxm

weixin_50267049的博客 1963

[代码开源]基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)实现与性能分析

本文详细介绍了基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)的实现与性能分析。通过代码开源,展示了如何从零搭建电力系统优化模型,解决配电网中的发电成本最小化问题。文章涵盖数据准备、模型实现细节、性能优化建议及常见问题解答,为电力系统研究者提供实用参考。

weixin_29103191的博客 707

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析

角谱迭代与傅里叶变换迭代算法(GS)的原理及其实例演示分析 目前,迭代法和强度传输方程(TIE)法是两类典型的非干涉相位检索技术(Phase Retrieval,被称为相位恢复、相位检索、相位反演法、相位复原等)。迭代法中的经典算法是Gerchberg-Saxton(GS),随后,出现了包括错误减少算法(ER)、混合输入输出法(HIO)、梯度搜索算法、角谱迭代算法等改进算法。...

简单光学 2万+

【XPath】—— python网络爬虫(六)

其后需要跟两个冒号,然后是节点的选择器,这里我们直接使用*,表示匹配所有节点,因此相应返回结果是第一个li节点的所有祖先节点,包括html、body,div和ul。这里我们虽然使用的是*匹配,但又加了索引选择,所以只获取了第二个后续节点。可想而知,这里选取的是所有子孙节点的文本,其中前两个是li的子节点a内部的文本,另外一个是最后一个li节点内部的文本,即换行符。第三次选择时,调用了 attribute 轴,可以获取所有属性值,其后跟的选择器还是*,代表获取节点的所有属性,返回值就是li节点的所有属性值。

2302_78240669的博客 749

VirtualBox安装Win10虚拟机超详细教程(附微软官方镜像下载)

本文提供了一份详细的VirtualBox安装Win10虚拟机教程,涵盖从环境准备、工具下载到系统安装与初始配置的全过程。特别推荐使用微软官方镜像下载,确保系统纯净安全。此外,还分享了性能优化技巧和常见问题解决方案,帮助用户高效搭建稳定的Windows测试环境。

weixin_29243279的博客 918

Python网络爬虫开发实战使用XPath,xpath的多种用法

XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言。它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ群:101677771 所以在做爬虫时,我们完全可以使用XPa

Python学习Q群696455390 435

VSCode关联VIVADO编辑Verilog

有时候接手别人的代码,或者从网上找的开源代码,每个人风格不一致,对齐缩进也不一样,阅读起来很累。有没有什么方法能快捷地格式化代码呢。下面我们利用VSCode插件来实现这个需求。Vivado是Xilinx公司提供的逻辑开发平台(之一),如果不喜欢Vivado自带的文本编辑器,可以选择第三方的文本编辑器VSCode。

小王在努力...的博客 7150

pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]‘ is not a valid editable requirement解决方案

本文主要介绍了pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]’ is not a valid editable requirement解决方案,希望能对使用markitdown的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

python网络爬虫——XPath的使用(四)

python网络爬虫——XPath的使用XPath的使用一、XPath的介绍二、XPath使用1、选取所有节点2、获取子节点3、获取父节点4、属性匹配5、文本获取6、属性获取7、属性多值匹配8、多属性匹配9、按序选择10、节点轴选择 XPath的使用 一、XPath的介绍 XPath的几个常用规则: 表达式 描述 nodename 选取此节点的所有子节点 / 从当前节点选取直接子节点 // 从当前节点选取子孙节点 . 选取当前节点 … 选取当前节点的父节点 @ 选取属性

gets_s的博客 765

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

perseverance51博客 5786

python网络爬虫-二度进阶篇·Xpath与lxml

Xpath语法、lxml库的应用

Tttian622的博客 1761

SAP Joule for Consultants 与 Joule for Developers 全面解读

SAP推出面向不同用户群体的Joule AI助手:开发者版(Joule for Developers)专注于编码提效,嵌入开发工具链辅助生成、重构和测试代码;顾问版(Joule for Consultants)聚焦业务场景,集成SAP云应用知识库,为咨询项目提供方案设计、差距分析和实施指引。两者共享AI底座但功能侧重点不同:开发者版优化技术开发流程,顾问版加速项目交付周期。典型应用场景包括制造业云转型方案制定和ABAP代码迁移,分别展示了两版本在业务决策支持和技术实施中的价值。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 541

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python笔记:网络爬虫之XPath、Beautiful Soup、PyQuery的使用

网络爬虫解析库的引入 之前基于正则,比较繁琐,出错率较高 爬取信息大多基于html结构的web页面, 网页节点较多,各种层级关系 常见的Python解析库 XPath: 基于XML文档,包含html查找功能 官方文档 Beautiful Soup 依赖于lxml的解析库 官方文档 PyQuery Python仿照jQuery严格实现 官方文档 通用的html模板文件 index.html ...

Wang的专栏 1131

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 一篇文章教你如何使用python爬虫
下一篇: 如何解决mapstruct和lombok冲突问题
境里婆娑
境里婆娑 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 1万+粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

境里婆娑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值