iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python爬虫中xpath实例分析
  • 797
分享到

python爬虫中xpath实例分析

2023-06-29 01:06:46 797人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python爬虫中xpath实例分析”,在日常操作中,相信很多人在python爬虫中xpath实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫中xpath实例分析”的疑

这篇文章主要介绍“python爬虫中xpath实例分析”,在日常操作中,相信很多人在python爬虫中xpath实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫中xpath实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言

XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于html文档的搜索

XPath的选择功能十分强大,它提供了非常简明的路径选择表达式,另外,它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择

xpath解析原理:

实现标签的定位:实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中。

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

环境的安装

pip install lxml

lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高

如何实例化一个etree对象

将本地的html文档中的源码数据加载到etree对象中:

etree. parse(filePath)#你的文件路径

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

etree.HtML('page_ text')#page_ text互联网中响应的数据

xpath 表达式

表达式描述
nodename选取此节点的所有子节点
/表示的是从根节点开始定位。表示的是一个层级。
//表示的是多个层级。可以表示从任意位置开始定位。
.选取当前节点
…选取当前节点的父节点
@选取属性
*通配符,选择所有元素节点与元素名
@*选取所有属性
[@attrib]选取具有给定属性的所有元素
[@attrib=‘value’]选取给定属性具有给定值的所有元素
[tag]选取所有具有指定元素的直接子节点
[tag=‘text’]选取所有具有指定元素并且文本内容是text节点

对上面表达式的实例详解

这是一个HTML的文档

<html lang="en"><head><meta charset="UTF-8" /><title>测试bs4</title></head><body><div><p>百里守约</p></div><div class="song"><p>李清照</p><p>王安石</p><p>苏轼</p><p>柳宗元</p><a href="Http://www.song.com/" title="赵匡胤" target="_self"><span>this is span</span>宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a><a href="" class="du">总为浮云能蔽日,长安不见使人愁</a><img src="http://www.baidu.com/meinv.jpg" alt="" /></div><div class="tang"><ul><li><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li><li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li><li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li><li><a href="http://www.sina.com" class="du">杜甫</a></li><li><a href="http://www.dudu.com" class="du">杜牧</a></li><li><b>杜小月</b></li><li><i>度蜜月</i></li><li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li></ul></div></body></html>

从浏览器中打开是这样的

python爬虫中xpath实例分析

为了方便直观,我们对写个HTML文件进行本地读取进行测试

子节点和子孙节点的定位 / 和 //

先来看子节点和子孙节点,我们从上往下找div这个节点,可以看到div的父节点是body,body父节点是html

python爬虫中xpath实例分析

定位到这个HTML的div对象中,看上面html源码,可以知道有三个div对象

python爬虫中xpath实例分析

python爬虫中xpath实例分析

python爬虫中xpath实例分析

我们通过三种不同的方法来输出这个节点的信息,可以看到输出的是三个一样的Element,也就是这三种方法实现的功能是一样的。

import requestsfrom lxml import etreetree = etree.parse('test.html')r1=tree.xpath('/html/body/div')#直接从上往下挨着找节点r2=tree.xpath('/html//div')#跳跃了一个节点来找到这个div节点的对象r3=tree.xpath('//div')##跳跃上面所有节点来寻找div节点的对象r1,r2,r3>>([<Element div at 0x19d44765108>,  <Element div at 0x19d447658c8>,  <Element div at 0x19d44765588>],   [<Element div at 0x19d44765108>,  <Element div at 0x19d447658c8>,  <Element div at 0x19d44765588>],   [<Element div at 0x19d44765108>,  <Element div at 0x19d447658c8>,  <Element div at 0x19d44765588>])

属性定位

如果我只想要div里面song这一个标签,就可以对其属性定位

python爬虫中xpath实例分析

当然返回的还是一个element

r4=tree.xpath('//div[@class="song"]')r4>>>[<Element div at 0x19d447658c8>]

索引定位

如果我只想获得song里面的苏轼的这个标签

我们找到了song,/p可以返回里面的所有标签,

tree.xpath('//div[@class="song"]/p')>>[<Element p at 0x19d4469a648>, <Element p at 0x19d4469a4c8>, <Element p at 0x19d4469af88>, <Element p at 0x19d4469a148>]

这个单独返回的苏轼的p标签,要注意的是这里的索引不是从0开始的,而是1

tree.xpath('//div[@class="song"]/p[3]')[<Element p at 0x19d4469af88>]

取文本

比如我想取杜牧这个文本内容

python爬虫中xpath实例分析

和上面一样,我们要定位到杜牧的这个a标签,首先要找到他的上一级 li ,这是第五个 li 里面的a所以就有了下面的写法,text()是把element转化为文本,当然上面的在后面加个text()都可以展示文本内容。

tree.xpath('//div[@class="tang"]//li[5]/a/text()')>>['杜牧']

可以看到这个返回的是一个列表,如果我们想取里面的字符串,可以这样

tree.xpath('//div[@class="tang"]//li[5]/a/text()')[0]杜牧

看一个更直接的,//li 直接定位到 li这个标签,//text()直接将这个标签下的文本提取出来。但要注意,这样会把所有的li标签下面的文本提取出来,有时候你并不想要的文本也会提取出来,所以最好还是写详细一点,如具体到哪个div里的li。

tree.xpath('//li//text()')['清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村', '秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山', '岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君', '杜甫', '杜牧', '杜小月', '度蜜月', '凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘']

取属性

比如我想取下面这个属性

python爬虫中xpath实例分析

可以直接用@取属性

tree.xpath('//div[@class="song"]/img/@src')['http://www.baidu.com/meinv.jpg']

或者如果我想取所有的href这个属性,可以看到tang和song的所有href属性

tree.xpath('//@href')['http://www.song.com/', '', 'http://www.baidu.com', 'http://www.163.com', 'http://www.126.com', 'http://www.sina.com', 'http://www.dudu.com', 'http://www.haha.com']

爬虫实战之58同城房源信息

#导入必要的库import requestsfrom lxml import etree#URL就是网址,headers看图一url='https://sh.58.com/ershoufang/'headers={'User-Agent':'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWEBKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.7 Safari/537.36'}#对网站发起请求page_test=requests.get(url=url,headers=headers).text# 这里是将从互联网上获取的源码数据加载到该对象中tree=etree.HTML(page_test)#先看图二的解释,这里li有多个,所里返回的li_list是一个列表li_list=tree.xpath('//ul[@class="house-list-wrap"]/li')#这里我们打开一个58.txt文件来保存我们的信息fp=open('58.txt','w',encoding='utf-8')#li遍历li_listfor li in li_list:#这里 ./是对前面li的继承,相当于li/div...    title=li.xpath('./div[2]/h3/a/text()')[0]    print(title+'\n')    #把文件写入文件    fp.write(title+'\n')fp.close()

图一:

python爬虫中xpath实例分析

图二:.

这里我们要提取所有的房源信息,可以看到每个小节点的上一个节点都是一样的,我们要提取的是h3节点a里的房源信息,看图三

python爬虫中xpath实例分析

这里每个 /li 节点里面的子节点都是一样的,所以我们可以先找到所有的li节点,再往下找我们想要的信息

python爬虫中xpath实例分析

到此,关于“python爬虫中xpath实例分析”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: python爬虫中xpath实例分析

本文链接: https://www.lsjlt.com/news/321781.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python爬虫中xpath实例分析
    这篇文章主要介绍“python爬虫中xpath实例分析”,在日常操作中,相信很多人在python爬虫中xpath实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python爬虫中xpath实例分析”的疑...
    99+
    2023-06-29
  • python爬虫指南之xpath实例解析
    Python爬虫指南之XPath实例解析XPath是一种用于在XML文档中进行导航和查找元素的语言。在爬虫中,XPath可以用于解析...
    99+
    2023-08-15
    python
  • Python爬虫实战之xpath解析
    XPath 是一门在 XML 文档中查找信息的语言,最初是用来搜寻 XML 文档的,但是它同样适用于 HTML 文档的搜索。 所以在Python爬虫中,我们经常使用xpath解析这种高效便捷的方式来提...
    99+
    2023-09-23
    python 爬虫 开发语言
  • Python爬虫必备之XPath解析库的示例分析
    小编给大家分享一下Python爬虫必备之XPath解析库的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、简介XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进...
    99+
    2023-06-15
  • Python爬虫实例分析
    今天小编给大家分享一下Python爬虫实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。环境搭建既然用python,那么...
    99+
    2023-06-03
  • python爬虫指南之xpath实例解析(附实战)
    目录前言环境的安装属性定位索引定位取文本取属性总结前言 XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻X...
    99+
    2024-04-02
  • Python爬虫案例分析
    本篇内容介绍了“Python爬虫案例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、论述这几个案例以前是给一些想进入Pyt...
    99+
    2023-06-17
  • ChatGPT爬虫实例分析
    本篇内容主要讲解“ChatGPT爬虫实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ChatGPT爬虫实例分析”吧!思考问题域我要写一个爬虫,把ChatGPT上我的数据都爬下来,首先想想我...
    99+
    2023-07-05
  • python爬虫lxml库解析xpath网页过程示例
    目录前言(一)xpath是什么(二)xpath的基本语法 路径查询。(三) lxml库(四)lxml库的使用 导入lxml.etree(五)实例演示前言 在我们抓取网页内容的时候,通...
    99+
    2024-04-02
  • Python爬虫XPath怎么用
    这篇文章主要为大家展示了“Python爬虫XPath怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python爬虫XPath怎么用”这篇文章吧。一、问题描述1.什么是XPath?xpath...
    99+
    2023-06-25
  • Python爬虫11-XML与XPath
    GitHub代码练习地址:用lxml解析HTML,文件读取,etree和XPath的配合使用:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac17_xpath%...
    99+
    2023-01-31
    爬虫 Python XPath
  • 5.网络爬虫——Xpath解析
    网络爬虫——Xpath解析 Xpath简介Xpath解析节点选择路径表达式谓语未知节点 Xpath实战演示豆果美食实战获取数据源代码 前言: 📝​&#x...
    99+
    2023-09-01
    爬虫 python 开发语言 云原生
  • Python爬虫基础入门实例分析
    这篇文章主要介绍“Python爬虫基础入门实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python爬虫基础入门实例分析”文章能帮助大家解决问题。      &...
    99+
    2023-06-27
  • Python爬虫必备之Xpath简介及实例讲解
    目录前言一、Xpath简介二、Xpath语法规则语法规则标签定位属性定位索引定位取文本内容三、语法规则练习总结前言 网上已经有很多大佬发过Xpath,而且讲的都很好,我是因为刚开始学...
    99+
    2024-04-02
  • Python爬虫数据举例分析
    本篇内容介绍了“Python爬虫数据举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!获取数据打开斗鱼直播界面,连续点击翻页Networ...
    99+
    2023-06-02
  • Python网络爬虫举例分析
    这篇文章主要讲解了“Python网络爬虫举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python网络爬虫举例分析”吧!先来看一段简单的代码。import requests...
    99+
    2023-06-02
  • python爬虫xpath模块简介示例代码
    目录一、前言二、简介三、安装四、使用五、案例一、前言 前两篇博客讲解了爬虫解析网页数据的两种常用方法,re正则表达解析和beautifulsoup标签解析,所以今天的博客将围绕另外一...
    99+
    2023-02-14
    python xpath模块 python爬虫 xpath
  • python怎么爬虫lxml库解析xpath网页
    这篇文章主要介绍“python怎么爬虫lxml库解析xpath网页”,在日常操作中,相信很多人在python怎么爬虫lxml库解析xpath网页问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python怎么爬...
    99+
    2023-06-30
  • Python爬虫中Xpath语法怎么用
    这篇“Python爬虫中Xpath语法怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python爬虫中Xpath语法怎...
    99+
    2023-06-27
  • Python爬虫之网络请求实例分析
    本篇内容介绍了“Python爬虫之网络请求实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.IP代理某些网站会检测一段时间内某IP的...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作