学习笔记

编辑器:Sublime

PS:因为爬虫接触Xpath,由于HTML的语法和XML很类似,所以这里想把Xpath都应用在HTML中。注意,这里我们用python进行分析,会使用lxml模块。

注意:这里的理论部分是关于XML文档的,但是介于HTML和XML的相似性,大家可以自行做类比,有的地方我也会用HTML和XML做类比。


文章目录

  • Xpath简介
  • Node节点
    • 节点之间的关系
    • 节点的类型
    • 节点的名字与值

Xpath简介

Xpath语言的核心是给出用于从XML文档中查找标记的语法规则,即编写Xpath路径表达式,以便使应用程序更加方便、快捷地从XML文件中检索到所需要的的数据。

  • Xpath路径表达式

一个Xpath路径表达式,简称Xpath表达式,由若干"定位步"所构成。Xpath路径表达式的核心是给出一个匹配XML文件中标记的模式,也可以说Xpath路径表达式的核心是满足一定条件的标记所组成的集合。

这里我们结合一个简单的HTML文档,来了解一下Xpath路径表达式:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>title</title>
</head>
<body><div class="animal"><p class="name"><a title="Tiger"></a></p><p class="content">Two tigers two tigers run fast</p></div><div class="animal"><p class="name"><a title="Rabbit"></a></p><p class="content">Small white rabbit white and white</p></div></body>
</html>

Xpath路径表达式:

/html/body/div[1]/following::div/p/a/@title

这个表达式是啥意思呢?注意!!它表示:返回test10.html文件中html根标记下,body子节点的第一个div子节点的div弟节点中,p子节点的a子节点的属性节点。。。。嗯,感觉这样表达不是很清晰。。。所以还是继续学后续知识点吧,学了就差不多明白了

python代码:

from lxml import etreewith open('test10.html', 'rb') as f:html = f.read().decode('utf-8')#print(html)
parse_html = etree.HTML(html)
title_list = parse_html.xpath('/html/body/div[1]/following::div/p/a/@title')
print(title_list)

Sublime输出:

['Rabbit']
[Finished in 0.4s]

可以!我们匹配到了。

Node节点

Xpath语言把XML文件中的标记、标记所包含的文本等组成的数据结构看做是一个树形结构,即将XML文件看做是由Node类型节点构成的树。Node节点又可以细分为Document、Element、Text、Attribute等节点。

节点之间的关系

Xpath语言经常用表面节点之间的关系术语:子节点、父节点、子孙节点、兄节点、弟节点、兄弟节点等。

一个节点的子节点也称为1级子节点,节点的1级子节点的子节点称为该节点的2级父节点,以此类推,节点的任何级别的子节点被称为该节点的子孙节点

一个节点的父节点也称为1级父节点,节点的1级父节点的父节点称为该节点的2级父节点,以此类推,节点的任何级别的父节点被称为该节点的祖先节点

一个节点的兄节点,是指和该节点具有相同级别,并且是该节点之前的某个节点;而一个节点的弟节点,则是与该节点具有相同级别,并且是该节点之后的某个节点;一个节点的兄弟节点是指和该节点具有相同级别的某个节点。

节点的类型

Xpath将XML文件看做是由Node类型节点构成的树。Node节点可以细分为Document、Element、Text、Attribute等节点。下面我们先看一张XML文件的结构图:

类比于HTML(方便之后用Xpath匹配HTML文件):

  • Document节点

Xpath语言将整个XML文件看成一个树形结构数据,并把XML文件作为该树的根节点,而这个根节点是Document类型的节点。Xpath将整个XML文件中的处理指令、根标记、根标记的子孙标记以及标记包含的文本看做是Document根节点的子孙节点。

  • Element节点

Xpath语言将XML文件中的每个标记看做是一个Element节点。

  • Text节点

Xpath语言将XML文件的标记中包含的文本看做一个Text节点,且该Text节点包含的文本内容就是它所对应的文本。

  • Attribute节点

Xpath语言将XML文件中标记含有的属性看做一个Attribute节点。由于XML文件中的标记和属性是关联关系,因此Attribute节点不是Element节点的子节点,但是Attribute节点将与其关联的Element节点看成自己的父节点。

  • Comment节点

Xpath语言将XML文件中的注释看做一个Comment节点,注释节点所包含的文本内容就是注释中的内容。

节点的名字与值

节点类型 节点名字 节点的值
Document #document null
Element 标记的名字 null
Text #text 节点在XML中对应的文本
Attribute 属性的名字 属性的值
Comment #comment 注释的内容

自学笔记,有错请求指出!

利用python爬虫(part7)--初识Xpath之Node节点相关推荐

  1. 利用python爬虫(part6)--用Xpath匹配带来的数据合并问题

    学习笔记 如果在本Blog里看到拼音,那可能是由于第一次shen he没通过被逼的,葛优躺,不知所措. 用Xpath匹配带来的数据合并问题 在我以往的爬虫案例中(比如:X凰X闻案例),我用Xpath分 ...

  2. 利用python爬虫(part17)--初识selenium

    学习笔记 文章目录 selenium phantomjs与chromedriver 浏览器对象browser selenium selenium为Web自动化测试工具,可运行在浏览器,根据指令操作浏览 ...

  3. 利用python爬虫(part8)--Xpath路径表达式

    学习笔记 编辑器:Sublime 注意:这里的理论部分是关于XML文档的,但是介于HTML和XML的相似性,大家可以自行做类比,有的地方我也会用HTML和XML做类比. 上一篇:初识Xpath之Nod ...

  4. 手把手教你利用 python 爬虫分析基金、股票

    手把手教你利用 python 爬虫分析基金.股票 文章目录 手把手教你利用 python 爬虫分析基金.股票 第一步:基金数据爬取 第二步:股票增持计算 第三步:好股基金选取 桌面程序 exe 从前大 ...

  5. 利用python爬虫与数据分析,打造最强玩法,轻松成为大神级玩家!

    前言: 最近迷上了一款游戏,但是作为一名程序员的我是不可能只玩游戏的,我必须把它的官网数据采集下来! 环境: windows python3.6.5 模块: requests jsonpath pyg ...

  6. python爬虫爬取音乐_利用python爬虫实现爬取网易云音乐热歌榜

    利用python爬虫实现爬取网易云音乐热歌榜 发布时间:2020-11-09 16:12:28 来源:亿速云 阅读:102 作者:Leah 本篇文章给大家分享的是有关利用python爬虫实现爬取网易云 ...

  7. 【爬虫】利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2)...

    [爬虫]利用Python爬虫爬取小麦苗itpub博客的所有文章的连接地址并写入Excel中(2) 第一篇( http://blog.itpub.net/26736162/viewspace-22865 ...

  8. 小游戏,利用Python爬虫之制作诗歌接龙

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:数据森麟 ( 想要学习Python?Python学习交 ...

  9. Python爬虫 | 利用python爬虫获取想要搜索的数据

    这篇文章主要介绍了利用Python爬虫采集想要搜索的信息(利用某du的接口实现)并且处理掉它的反爬手段,文中示例代码很详细,具有一定的学习价值,感兴趣的小伙伴快来一起学习吧. ☀️新人小白博主

最新文章

  1. 不是方阵有逆矩阵吗_吴恩达机器学习笔记18逆矩阵、矩阵转置
  2. mybatis中的TypeAliasRegistry
  3. JavaScript面向对象精要(一)
  4. github不用输入用户密码即可登录
  5. js进阶 11-16 jquery如何查找元素的父亲、祖先和子代、后代
  6. java中的轮子是什么意思_后端的轮子(一) - java后端开发的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 静止无功发生器(SVG)原理简介及仿真验证
  8. vue项目默认IE以最高级别打开
  9. 加州大学惊现神操作!物理教授用数学论文摆脱400美元交通罚单,却惨被网友大反转.........
  10. 创业失败的内因分析及避免办法
  11. 【优化算法】金鹰优化算法(GEO)【含Matlab源码 187期】
  12. 笔记·模拟电子技术基础——郑益慧老师
  13. extjs表格编辑、EditorGridPanel
  14. 74系列芯片使用心得
  15. TestStand-编辑VI
  16. MindMeld中文文档--2.构建会话应用程序的不同方法[Different Approaches for Building Conversational Applications]
  17. java实现电脑定时关机重启_利用任务计划程序实现电脑自动定时关机
  18. android+美拍加表情,美拍怎么添加表情文字在哪
  19. 免费微信开通检测,有没有免费的微信开通检测工具呢
  20. ice java例子,ICE java 范例

热门文章

  1. win7计算机中丢失mfc120,mfc120.dll 64位
  2. 网络杂谈, Docker, MongoDB
  3. 【机器学习】贝叶斯整理
  4. php通过正则表达式下载图片到本地的实现代码,PHP通过正则表达式下载图片到本地的实现代码...
  5. Linux20180528
  6. angular i18n 国际化 多语言
  7. Ooredoo卡塔尔项目UNIFY:基于NFV的基础设施转型
  8. Windows下VTK6.0.0安装详解(CMake使用说明)
  9. angularjs 工具方法
  10. Jquery ajax提交表单几种方法详解