当使用requests爬取得到html文档(静态网页)之后,需要从html文档字符串中提取和筛选出我们想要的数据,使用xpath来处理解析之后的html文档字符串,就可以快速的寻找和提取数据。

xpath的定位思路是利用html中的标签嵌套层级关系,利用路径的形式来匹配相应的元素节点,并返回匹配得到的节点对象(内容)。例如:html为根目录节点,html/body/div表示body中的一个div标签。

学习xpath主要学习其定位方法:包括绝对定位、相对定位、如何确定同一个层级下的指定的标签(利用属性)、从某个节点向前或向后定位节点、定位元素内容、定位属性…

xpath并没有返回定位得到的节点对象,而是将元素内容和标签属性都当做路径来进行定位,如:tree.xpath('//div[@class="song"]/img/@src')中的@src就表示这张图片的url,并没有提供get方法或者attrs等属性来获取属性。

另外也可以使用浏览器开发工具自动生成xpath路径或者使用xpath helper插件来调试xpath路径,就不需要我们花心思去构造xpath路径了。

目录

一,html文档中的元素层级关系图

二,数据预处理

2.1 使用lxml的etree.Html&parse函数

2.2 使用parsel.Selector()函数

三,xpath语法

3.1 常用的基础语法

3.2 语法进阶

3.2.1 谓语

3.2.2 运算符

3.3.3 函数

3.3.4 Xpath的轴及其实例

四,xpath实例实战

4.1 给定例子写路径

4.2 给定代码说出代码功能

五,Xpath Helper插件的安装


一,html文档中的元素层级关系图

概括的分类有下面三类。而子子节点(孙子节点)也可以看成是某个节点的子节点,为了记忆,不需要使用子子节点这种节点关系。

二,数据预处理

预处理是指将给定的文档字符串进行格式化,例如:将不全的标签进行补全,将层级关系没有对齐的对齐……

2.1 使用lxml的etree.Html&parse函数

from lxml import etree
etree.parse(filePath,) #本地的文件路径
etree.HtML('page_text') #page_ text互联网中响应的数据

2.2 使用parsel.Selector()函数

from parsel import Selector# html 可以是请求某个网页的源码,也可以是html,xml格式的字符串
selector = Selector(html)

得到selector对象之后就可以使用selector.xpath(路径字符串)来进行定位元素节点。下面将要介绍用pasel库使用xpath语法。

三,xpath语法

3.1 常用的基础语法

/:从html节点开始绝对定位&进入到下一个层级,eg:tree.xpath('/html/body/div') 。

//:从任意位置开始相对定位,eg:('//div[@class="song"]/p[3]')。

.:表示当前节点;..:表示当前节点的上一个节点。(类似于cmd的cd命令)。

@:用于匹配带有属性内容的元素节点,写在[]里面,例如:[@class="header"],他的作用就是修饰一个节点,以便于准确定位,如:tree.xpath('//div[@class="song"]/p[3]'),[@class="song"]用于修饰div标签,表示从这个div相对定位。

text():表示元素内容。

[index]:表示同一个层级中的第几个。如:tree.xpath('//div[@class="tang"]//li[5]/a/text()')[0]。

*:通配符,如"//div//*"选取div容器中的所有节点。

@*:@表示属性,@*表示任意属性,如[@*]。

node():某节点下的所有节点。

3.2 语法进阶

利用上面的基础语法基本上可以匹配到html文档任何地方的内容了,下面的语法不常用,截图来自各位大佬的博文。

3.2.1 谓语

3.2.2 运算符

3.3.3 函数

3.3.4 Xpath的轴及其实例

四,xpath实例实战

4.1 给定例子写路径

文档字符串:

实战:extract()返回一个列表,列表内容为匹配得到的元素节点。

4.2 给定代码说出代码功能

#coding=utf-8from lxml import etreehtml = '''<html><head><meta name="content-type" content="text/html; charset=utf-8" /><title>友情链接查询 - 站长工具</title><!-- uRj0Ak8VLEPhjWhg3m9z4EjXJwc --><meta name="Keywords" content="友情链接查询" /><meta name="Description" content="友情链接查询" /></head><body><h1 class="heading">Top News</h1><p style="font-size: 200%">World News only on this page</p>Ah, and here's some more text, by the way.<p>... and this is a parsed fragment ...</p><a href="http://www.cydf.org.cn/" rel="nofollow" target="_blank">青少年发展基金会</a> <a href="http://www.4399.com/flash/32979.htm" target="_blank">洛克王国</a> <a href="http://www.4399.com/flash/35538.htm" target="_blank">奥拉星</a> <a href="http://game.3533.com/game/" target="_blank">手机游戏</a><a href="http://game.3533.com/tupian/" target="_blank">手机壁纸</a><a href="http://www.4399.com/" target="_blank">4399小游戏</a> <a href="http://www.91wan.com/" target="_blank">91wan游戏</a></body>
</html>'''
# 下面代码的功能是什么?
page = etree.HTML(html.lower().decode('utf-8'))
hrefs = page.xpath(u"//a")
for href in hrefs:print href.attrib

更多用法总结在这里。实战1。实战2。

五,Xpath Helper插件的安装

打开每个浏览器的应用程序拓展商店,搜索Xpath Helper安装之后,重启浏览器即可。这个插件的主要作用就是验证我们构思的xpath路径是否正确及是否能够匹配到内容。

python爬虫之xpath的使用相关推荐

  1. python xpath语法-Python爬虫之XPath语法和lxml库的用法

    本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 安装 为什么要用这个库 ...

  2. Python爬虫:Xpath语法笔记

    Python爬虫:Xpath语法笔记 一.选取节点 常用的路劲表达式: 表达式 描述 实例   nodename 选取nodename节点的所有子节点 xpath('//div') 选取了div节点的 ...

  3. 【Python】【进阶篇】十二、Python爬虫的Xpath简明教程(十分钟入门)

    目录 十二.Python爬虫的Xpath简明教程(十分钟入门) 12.1 Xpath表达式 12.2 Xpath节点 12.3 节点关系 12.4 Xpath基本语法 12.4.1 基本语法使用 12 ...

  4. Python爬虫之XPath基础教程:用代码抓取网页数据

    Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...

  5. Python爬虫:Xpath爬取网页信息(附代码)

    Python爬虫:Xpath爬取网页信息(附代码) 上一次分享了使用Python简单爬取网页信息的方法.但是仅仅对于单一网页的信息爬取一般无法满足我们的数据需求.对于一般的数据需求,我们通常需要从一个 ...

  6. python爬虫——使用xpath爬取搜狗微信文章

    缺点:爬取一定数量之后会出现验证码,导致不能继续爬取,需要更换ip才可以继续爬取,或者在浏览器重新输入验证码之后复制cookie后方能继续爬取. import requests from fake_u ...

  7. python金融分析小知识(12)——python爬虫工具xpath使用

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 本篇文章紧接上一篇文章,python金融分析小 ...

  8. python爬虫之xpath和lxml应用—爬取豆瓣评分爬取

    python爬虫之豆瓣评分爬取 1 第一步 获取网页源码 2 第二步 获取电影信息 3 第三步 保存数据 4 综合 ''' 需求:爬取电影的名字 评分 引言 详情页的url,每一页都爬取并且把数据保存 ...

  9. Python爬虫:Xpath获取关键标签,实现盖楼抽奖

    目录 前言 分析链接 切分提取tid 随机提取评论的内容 盖楼刷抽奖 前言 目前对于Python来说,使用最多的功能肯定是Python爬虫.比如抢购茅台以及刷评论,盖楼等抽奖活动贴,都可以应用到爬虫的 ...

  10. python爬虫为什么xpath路径正确却检索不到内容_中国知网爬虫

    一.知网介绍 提起中国知网,如果你曾经写过论文,那么基本上都会与中国知网打交道,因为写一篇论文必然面临着各种查重,当然翟博士除外.但是,本次重点不在于写论文跟查重上,而在于我们要爬取知网上一些论文的数 ...

最新文章

  1. 单片机干嘛的?嵌入式是单片机吗?
  2. java中浅层克隆和深层克隆
  3. Leetcode 162. 寻找峰值 解题思路及C++实现
  4. 网络游戏程序中解决加载卡顿的有效方法
  5. Github标星24.9k!适合初学者的有趣、入门级的开源项目
  6. flutter打包的app有多大_前端大势所趋---Flutter 这篇文章会让你行动起来
  7. Time.deltaTime 含义和应用
  8. 【Vegas原创】重建Exchange 2007 OWA的虚拟目录
  9. Eclipse自定义文档注释和方法注释
  10. android菜单键选择图标,Android Design
  11. Windows下GDAL3.1.2编译 (VS2015)
  12. Docker---DockerFile搭建的最简单的jsp应用
  13. matlab声压级的计算,声压级计算
  14. 使用Canvas绘制简单工程符号
  15. 黑马程序员并发编程笔记(一)
  16. msvcr71.dll控件常规安装
  17. ogg for bigdata hbase安装步骤
  18. 贪吃蛇 c语言 不死模式,贪吃蛇大作战不死版-贪吃蛇大作战不死版本下载-乐游网安卓下载...
  19. 2021年网络空间安全学院预推免面试经验总结
  20. java将小写金额转为大写金额

热门文章

  1. cf指定服务器菜鸟营,设置服务器只接受Cloudflare的CDN IP连接方法 服务器仅允许CF IP访问的方法...
  2. 更高效地在Photoshop中工作
  3. C# WinForm 美化ListBox控件+美化滚动条
  4. TV(智能电视)app开发,adb局域网连接调试
  5. java 分布式计算框架_学Java分布式和高级架构,必懂的两大知识点!
  6. Spring Boot(九):整合elasticsearch并使用logstash同步数据
  7. Fresco加载图片使用笔记--基本使用,播放动态wbep,控制播放次数,预加载,闪帧解决
  8. P02014253 苏辰昱 信息论作业
  9. 深度解读微信提现收费背后的真实意图
  10. 使用docker-compose 部署服务 上