xpath相关用法及技巧
本节讲解网页解析神器----XPath
lxml下载
xpath基本用法
xpath插件
Xpath及XML路径语言,它是一门在XML文档查找信息的语言。
一:lxml下载以及安装
首先需要解决lxml的安装问题,在Windows下我们可以尝试使用pip install lxml 下载,如果没有任何报错的,恭喜安装成功,下面可以进行骚操作了;如果出现报错,出现的提示出现libxml2库等信息,可以采用wheel安装。
wheel的安装方法:推荐去 http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml下载对应的lxml文件,切换到下载文件的目录下,进入cmd,pip install {文件名}.wheel进行安装。
二:xpath的使用方法
介绍一下xpath的常用规则:
| 表达式 | 描述 | 示例 | 结果 |
|---|---|---|---|
| nodename | 选取此节点的所有子节点 | xbhog | 选取xbhog下所有的子节点 |
| / | 如果是在最前面,代表从根节点选取。否则选择某节点下的某个节点 | /xbhog | 选取根元素下所有的xbhog节点 |
| // | 从全局节点中选择节点,随便在哪个位置 | //xbhog | 从全局节点中找到所有的xbhog节点 |
| @ | 选取某个节点的属性 | //xbhog[@price] | 选择所有拥有price属性的xbhog节点 |
| . | 当前节点 | ./a | 选取当前节点下的a标签 |
| 路径表达式 | 描述 |
|---|---|
| /bookstore/book[1] | 选取bookstore下的第一个子元素 |
| /bookstore/book[last()] | 选取bookstore下的倒数第二个book元素。 |
| bookstore/book[position()<3] | 选取bookstore下前面两个子元素。 |
| //book[@price] | 选取拥有price属性的book元素 |
| //book[@price=10] | 选取所有属性price等于10的book元素 |
这些基本规则基本上满足日常需求了,如果还有其他问题,百度是个好东西你值得拥有。
下面举个例子实战一下:
下面是我博客的内容,我们需要做的就是爬取这一页的标题内容:[两个数组的交集.......],想一下!

我们先打开开发者模式,找到标题所在的网页源代码:

我们从最里面一步一步往外推,<a> --> <h4> --> <div class="article-item-box csdn-tracking-statistics"> --><div class="article-list">
<div class="article-list"> 是 <h4> 标签的父节点
<div class="article-list"> 是 <a> 标签的孙节点
<h4> 是 <a> 标签的父节点
所以我们可以参照上面的常用规则写出://div[@class='article-list']//h4表达式,我们看到下图中的标题都已经选中了,这就证明我们写的表达式正确。

三:插件介绍
有人会发现我图片中出现黑色的框,这是谷歌的一个插件(xpath helper), 在chrome浏览器安装好xpath helper插件后(科学访问,人人有责), 点击 Ctrl + Shift + X 激活 XPath Helper 的控制台,然后您可以在 Query 文本框中输入相应 XPath 进行调试了,提取的结果将被显示在旁边的 Result 文本框中,可以实时检测自己的表达式是否正确。

最后有个小补充,如果你不想写xpath语法,你还可以F12,选中你想要的信息右击,copy--copy xpath,缺点是没有手写的简洁,copy的比较繁琐,不利于阅读。

爬虫系列----未完待续.......
分享及成功,你的报应就是我,记得关注!
xpath相关用法及技巧的更多相关文章
- MFC总结之CListCtrl用法及技巧(一)
本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧.当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅.主要包括以下十三点内容:基本操作.获取选中行的 ...
- slf4j log4j logback关系详解和相关用法
slf4j log4j logback关系详解和相关用法 写java也有一段时间了,一直都有用slf4j log4j输出日志的习惯.但是始终都是抱着"拿来主义"的态度,复制粘贴下配 ...
- $.ajax等相关用法
下面是jquery一些方法的相关用法: $.ajax: $.ajax({ type: "GET", url: "url", data: {username:$( ...
- oradmin相关用法
[转]oradmin相关用法 创建例程: -NEW -SID sid | -SRVC 服务 [-INTPWD 口令] [-MAXUSERS 数量] [-STARTMODE a|m] [-PFILE 文 ...
- #ifdef预编译相关用法
#ifdef预编译相关用法主要有:(1)#ifdef XXX executing the corresponding xxx code #endif(2)#ifdef XXX executing th ...
- Java中Date各种相关用法
Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...
- Js相关用法个人总结
Js相关用法个人总结 js中将数组元素添加到对象中var obj = {}; var pushArr = [11,22,33,44,55,66]; for(var i=0;i<pushArr. ...
- Css相关用法个人总结
Css相关用法个人总结
- 关于Unity中的刚体和碰撞器的相关用法(二)
在关于Unity中的刚体和碰撞器的相关用法(一)的基础上 有一个plane平面,一个ball球体,都挂了碰撞器,ball挂了刚体Rigidbody,写了一个脚本ball挂载在球体上,球体从空中落下装机 ...
随机推荐
- Day4 文件管理-常用命令
文件管理 --> 创建 移动 删除 复制 1.cp复制: #####-v:详细显示命令执行的操作 #####-r: 递归处理目录与子目录 #####-p: 保留源文件或目录的属性 #####1. ...
- elasticsearch Discovery 发现模块学习
发现模块和集群的形成 目标 发现节点 Master选举 组成集群,在Master信息发生变化时及时更新. 故障检测 细分为几个子模块 Discovery发现模块 Discover是在集群Master节 ...
- Elasticsearch(9) --- 聚合查询(Bucket聚合)
Elasticsearch(9) --- 聚合查询(Bucket聚合) 上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) --- 聚合查询(Metri ...
- Moonraker 靶机渗透
0x01 简介 攻击Moonraker系统并且找出存在最大的威胁漏洞,通过最大威胁漏洞攻击目标靶机系统并进行提权获取系统中root目录下的flag信息. Moonraker: 1镜像下载地址: htt ...
- opencv之霍夫曼变换
霍夫变换不仅可以找出图片中的直线,也可以找出圆,椭圆,三角形等等,只要你能定义出直线方程,圆形的方程等等. 不得不说,现在网上的各种博客质量真的不行,网上一堆文章,乱TM瞎写,误人子弟.本身自己就没有 ...
- linux常用开发命令总结
linux常用命令 文件操作命令 1. cd 目录名/目录名 切换目录 cd .. 切换到上一级目录 (change dictionary) Ctrl+C强制退出命令行,回到上一级 2.ls ...
- JS/jQuery点击某元素之外触发事件
JQuery // 第一步:点击任何地方都触发事件 $(document).click(function(){ alert("点击当前页面的任何地方都触发此点击事件:"); }); ...
- MongoDB的全文索引
Table of Contents 背景 如何使用 准备工作:插入数据 建立全局索引 查询结果 使用中存在哪些问题? 英文存在停止词 中文无法采用全文索引 前面了解了多种索引方式,比如单键索引,多 ...
- 使用sp_getAppLock引发的一个小问题
这几天线上频繁报如下的错误:“无法释放应用程序锁(数据库主体: 'public',资源: 'aa'),原因是当前没有保留该应用程序锁.” 下面是写法: declare @result int; BEG ...
- pip 修改镜像源为豆瓣源
1. 修改配置文件 编辑配置文件,如果没有则新建: $ vi ~/.pip/pip.conf 添加内容如下: [global] index-url = https://pypi.doubanio.co ...