本节讲解网页解析神器----XPath

  1. lxml下载

  2. xpath基本用法

  3. 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相关用法及技巧的更多相关文章

  1. MFC总结之CListCtrl用法及技巧(一)

    本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧.当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅.主要包括以下十三点内容:基本操作.获取选中行的 ...

  2. slf4j log4j logback关系详解和相关用法

    slf4j log4j logback关系详解和相关用法 写java也有一段时间了,一直都有用slf4j log4j输出日志的习惯.但是始终都是抱着"拿来主义"的态度,复制粘贴下配 ...

  3. $.ajax等相关用法

    下面是jquery一些方法的相关用法: $.ajax: $.ajax({ type: "GET", url: "url", data: {username:$( ...

  4. oradmin相关用法

    [转]oradmin相关用法 创建例程: -NEW -SID sid | -SRVC 服务 [-INTPWD 口令] [-MAXUSERS 数量] [-STARTMODE a|m] [-PFILE 文 ...

  5. #ifdef预编译相关用法

    #ifdef预编译相关用法主要有:(1)#ifdef XXX executing the corresponding xxx code #endif(2)#ifdef XXX executing th ...

  6. Java中Date各种相关用法

    Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...

  7. Js相关用法个人总结

    Js相关用法个人总结  js中将数组元素添加到对象中var obj = {}; var pushArr = [11,22,33,44,55,66]; for(var i=0;i<pushArr. ...

  8. Css相关用法个人总结

    Css相关用法个人总结

  9. 关于Unity中的刚体和碰撞器的相关用法(二)

    在关于Unity中的刚体和碰撞器的相关用法(一)的基础上 有一个plane平面,一个ball球体,都挂了碰撞器,ball挂了刚体Rigidbody,写了一个脚本ball挂载在球体上,球体从空中落下装机 ...

随机推荐

  1. Prometheus Operator 监控Kubernetes

    Prometheus Operator 监控Kubernetes 1. Prometheus的基本架构 ​ Prometheus是一个开源的完整监控解决方案,涵盖数据采集.查询.告警.展示整个监控流程 ...

  2. 在linux服务器上装svn版本管理,自动部署代码到web项目

    在linux服务器上装svn版本管理,自动部署代码到项目 1.安装svn服务器端  yum install subversion   从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认  ...

  3. python连接数据库查询

    import sqlite3 as db conn = db.connect(r'D:/data/test.db') print ('Opend database successfully \n') ...

  4. JS 取整、取余

    一.取整 1. 取整 // 丢弃小数部分,保留整数部分 parseInt(7/2) // 3 2. 向上取整 // 向上取整,有小数就整数部分加1 Math.ceil(7/2) // 4 3. 向下取 ...

  5. MangoDB的下载和安装

    ​ 前面已经简单介绍了MongoDB,今天我们就要正式学习他了,话不多说,咱先来安装. 1.现在MongoDB已经到了4.0版本,咱先去官网下载,MongoDB官网传送门,下载的版本信息如下,点击Do ...

  6. Error running 'tomcat:run' Cannot run program..CreateProcess error=2,系统找不到指定的文件

    Error running 'tomcat:run': Cannot run program "tomcat:run" (in directory "D:\WorkTes ...

  7. php常用函数(第一版)

    1.array_slice 作用:数组分页函数 案例:$output  =  array_slice ( $input , - 2 ,  1 ); 2.array_column 作用:数组根据值取出一 ...

  8. 01、JDBC连接

    ① 下载JDBC-MySQL数据库驱动 链接:https://pan.baidu.com/s/1KtSZZ5hXlxu2QrmsXg3lkA 提取码:1pbl ② 加载JDBC-MySQL数据库驱动 ...

  9. Java 学习笔记之 线程sleep方法

    线程sleep方法: 单主线程使用sleep: Main线程差了2000毫秒. public class MainSleepThread extends Thread{ @Override publi ...

  10. B-微积分-Sigmoid函数

    目录 Sigmoid函数 一.Sigmoid函数详解 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnbl ...