目录

一、安装

二、xpath基本语法

2.1、依赖

2.2、xpath语法

2.3、实例

2.3.1、html文件

2.3.2、python

三、获取百度网站首页的“百度一下”

3.1、步骤

3.2、注意


一、安装

1)安装xpath插件

2)在chrome中安装xpath插件

3)将xpath拖入即可

4)验证xpath

1》点击 ctrl + shift + x 出现小黑框,即代表安装成功

2》再次点击 ctrl + shift + x 即可关闭小黑框

二、xpath基本语法

2.1、依赖

1)安装 lxml 库

2)导入 lxml.etree

3)解析 html 文件

# xpath解析
(1)本地文件                                           etree.parse
(2)服务器响应的数据 response.read().decode('utf8')      etree.HTML()

4)获取特定组件内容

tree.xpath('xpath路径')

2.2、xpath语法

1、路径查询

//:查找所有子孙节点,不考虑层级关系

/:找直接子节点

2、谓词查询

//div[@id]

//div[@id="maincontent"]

3、属性查询

//@class

4、模糊查询

//div[contains(@id, "he")]

//div[starts-with(@id, "he")]

5、内容查询

//div/h1/text()

6、逻辑运算

//div[@id="head" and @class="s_down"]

//title | //price

2.3、实例

2.3.1、html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"/><title>Title</title>
</head>
<body><ul><li id="l1" class="c1">北京</li><li id="l2">上海</li><li>深圳</li><li>武汉</li></ul><ul><li>大连</li><li>锦州</li><li>沈阳</li></ul>
</body>
</html>

2.3.2、python

from lxml import etree# xpath解析
# (1)本地文件                                           etree.parse
# (2)服务器响应的数据 response.read().decode('utf8')      etree.HTML()# xpath解析本地文件
tree = etree.parse("17_xpath基本使用.html")# tree.xpath('xpath路径')# 查找ul下面的li
li_list= tree.xpath('//body//ul/li')# 查找所有有id属性的li标签
# text()获取标签中的内容
li_list1 = tree.xpath('//ul/li[@id]/text()')# 查找id为l1的li标签,注意“引号”的问题
li_list2 = tree.xpath('//ul/li[@id="l1"]/text()')# 查找到id为l1的li标签的class的属性值
li1 = tree.xpath('//ul/li[@id="l1"]/@class')# 查询id中包含l的li标签
li2 = tree.xpath('//ul/li[contains(@id,"l")]/text()')# 查询id的值以l开头的li标签
li3 = tree.xpath('//ul/li[starts-with(@id,"l")]/text()')# 查询id为l1和class为c1的标签
li4 = tree.xpath('//ul/li[@id="l1" and @class="c1"]/text()')# 查询id为l1或id为l2的标签(只能通过标签获取而不是属性)
li = tree.xpath('//ul/li[@id="l1"]/text() | //ul/li[@id="l2"]/text()')# 判断列表的长度
print(li)
print(len(li))

三、获取百度网站首页的“百度一下”

3.1、步骤

1)根据网页源码,编写xpath路径

2)编写代码

from lxml import etree
import urllib.request# (1)获取网页源码
# (2)解析服务器响应的数据 response.read().decode('utf8')      etree.HTML()
# (3)打印url = "https://www.baidu.com/"headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}# 请求对象的定制
request = urllib.request.Request(url=url, headers=headers)# 模拟浏览器访问服务器
response = urllib.request.urlopen(request)# 获取网页源码
content = response.read().decode("utf8")# 解析网页源码,获取想要的数据
tree = etree.HTML(content)# 获取想要的数据 xpath的返回值是一个列表类型的数据
result = tree.xpath('//input[@id="su"]/@value')[0]print(result)

3.2、注意

爬取到的html可能和浏览器解析的html不一样,故存在浏览器xpath_helper可以获取到,而代码获取不到的情况,需要查看爬取到的源码:

数据解析——xpath相关推荐

  1. python数据解析——xpath爬取文字和图片

    xpath解析:最常用且最便捷高效的一种解析方式,通用性. xpath解析原理: 1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中. 2.调用etree对象中的xpath方法 ...

  2. python爬虫数据解析xpath解析详细讲解——附有详细案例

    案例③由于时间流逝,网页爬取失效了 最近考研复试,增加一个案例,爬取985211学校,并以excel表格形式存储 文章目录 1.什么是xpath 是最常用的最广泛的数据解析方式 2.xpath解析原理 ...

  3. 3.3 数据解析之xpath解析

    数据解析–xpath解析 最常用最便捷高效的一种解析方式 1. 模块安装 pip install lxml from lxml import etree 2. 解析原理 实例化一个 etree 对象, ...

  4. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObjectpublic class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mark ...

  5. 05-xpath爬虫数据解析

    Xpaht数据解析 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery ...

  6. 数据解析学习笔记(正则解析、bs4解析、xpath解析)

    聚焦爬虫:爬取页面中指定的页面内容. - 编码流程: - 指定url - 发起请求 - 获取响应数据 - 数据解析 - 持久化存储 数据解析分类: 正则 bs4 xpath(***) 数据解析原理概述 ...

  7. python爬虫实战之旅( 第三章:数据解析(xpath法))

    上接:第三章:数据解析(bs4法) 下接:第四章:验证码识别 1.xpath解析简介 最常用且最便捷高效的一种解析方式.通用性很好 xpath解析原理 实例化一个etree的对象,且需要将被解析的页面 ...

  8. 爬虫之bs4、xpath数据解析(案例—scrapy获取菜鸟HTML页面数据)

    文章结构 1.爬虫概念简介 2.爬虫的流程 3.数据解析 (1)bs4解析 (I)根据标签名查找 soup.a (II)获取属性 soup.a[attr] (III)soup.a.text 获取响应文 ...

  9. 2 爬虫 数据解析(bs4,XPath) robots协议 cookie反爬 代理反爬

    爬虫 1 数据解析 1.1 介绍 1.1.1 概念即作用 数据解析就是将一组数据中的局部数据进行提取,用于实现聚焦爬虫. 聚焦爬虫是建立在通用爬虫的基础上,从通用爬虫获取的整个源码数据中提取出指定的数 ...

最新文章

  1. python开发教程视频教程_金牌大神讲师Alex带你学Python 153节课带你轻松学透Python开发视频教程_IT教程网...
  2. C语言:画一个爱心 送女票
  3. 正则(身份证,手机号,邮箱,正整数)
  4. YUMI~~强大的USB启动盘制作工具!!
  5. python编写下载器可暂停_python 并发下载器实现方法示例
  6. php5.3.*编译出现make: *** [ext/gd/libgd/gd_compat.lo] Error 1 解决方法
  7. 这个让人看跪了的设计!实力证明,数学才是世界的最终boss!
  8. ArrayList类contains方法实现原理
  9. shell命令总结一
  10. Python的函数式编程--从入门到⎡放弃⎦
  11. Python+OpenCV:理解k近邻(kNN)算法(k-Nearest Neighbour (kNN) algorithm)
  12. dev gridview 打印列数过多_更适合孩子使用的错题打印机,超小体积什么都能打:喵喵机P3测评...
  13. 第一课 控制div属性
  14. SAP HR工资核算基础(转)
  15. Excel取消合并单元格后自动填写内容
  16. Java后端社招面试经历,不愧是大佬
  17. 颜色直方图, HSV直方图, histogram bins
  18. 【学习笔记】李宏毅2021春机器学习课程第三节:卷积神经网络(CNN)
  19. Lucas–Kanade
  20. 1.UE4的获取及商城应用

热门文章

  1. Codeforces Round #782 (Div. 2) A-D题解
  2. No.1 序 | Flink 知其然,知其所以然
  3. SSL 为IP签发证书
  4. 他曾是中国最豪的首富,身家不可估量,却一夜之间消失隐匿了
  5. 【计算机科学与技术学的是什么?】
  6. 银笺生花,伴你浪迹天涯
  7. 2020年熔化焊接与热切割模拟考试系统及熔化焊接与热切割考试试题
  8. 新品-图灵超频工作站GT430M介绍
  9. 网页生成了过多的重定向
  10. 数据表明越穷越爱玩手机,你被手机绑架了多久?