lxml 和 XPah (爬虫)

  • XPath 的基本语法规则
  • 获取内容
    • 集合的概念
  • 属性匹配与获取
  • 按序选择节点

XPath 的基本语法规则

XPath 语法规则 描述
nodename 选取此节点的作用子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
选取当前节点的父节点
@ 选取属性

注意:

  • 通过X Path定位节点返回的是节点集合,即使只有一个节点,返回的也是一个节点集合。

  • 使用XPath分析的HTML文档并不一定是标准的,可以没有像 <html>、<head>、<body> 这些节点。任何一段符合HTML语法标准的代码都可以使用XPah进行定位。

获取内容

  • 通过getroot方法获得根节点
  • 通过get方法获得节点属性值,
  • 通过text方法属性获取节点内容,通过索引的方式引用子节点。

如有一个下面的HTML

html = '''
<div>
<ul>
<li class="item1"><a href ="http:1">1</a><p>11</p></li>
<li class="item2"><a href ="http:2">2</a></li>
<li class="item3"><a href ="http:3">3</a></li>
</ul>
</div>

集合的概念

下面代码:

from lxml import etree
# 分析HTML代码
tree = etree.HTML(html)
# 使用 xpath 定位
aTags = tree.xpath("//li")
print(aTags[0][0].text) # 对应<a>
print(aTags[0][1].text) # 对应<p>
print(aTags[1][0].text)
# 输出
1
11
2

.分析

  • //:由上面的语法规则,这个当前节点指的是html这个整体,即文档节点。所以这样可以的到<div>、<ul>、<li>在内的节点
  • li:是语法规则第一条,就是选取所有节点名为li
  • 之后返回是一个集合,因为在该案列中有三个,所以可以想象成是一个二维集合。其中在li中的每一个标签一同构成了一个二维数组

属性匹配与获取

比较常用的匹配就是根据属性值来选取节点。引用属性值需要在属性名前面加@,如@class表示class属性。

XPath 的过滤条件需要放到一对中括号([…])中,如'//a[@class="item1"]'表示过滤所以class属性值为item1的<a>节点。如果不放在括号里,如‘//a/@href'表示获取<a>节点的href属性值。

如上面的例子我们要获取第二个li 可以这样写:

aTags = tree.xpath("//li[@class='item2']")

按序选择节点

在很多时候,在选中某些节点时,按一些属性进行匹配,可能同时有多个节点满足条件,而只想得到其中的一个或几个节点。

这时就要使用索引的方式获取特定的节点。在X Path中使用索引的方式与 Python 中引用列表中元素的方式类似,都是在中括号中使用索引,

如上面的例子我们要获取第二个li 也可以这样写:

aTags = tree.xpath("//li[2]")

注意:在这里下标是从1开始的。

lxml 和 XPah (爬虫)相关推荐

  1. Python常用插件类举,lxml+Xpath实现爬虫,使用Xpath爬取链家二手房源信息

    目录 一.XPath 二.XPath 常用规则 三.在谷歌浏览器安装XPath插件 四.Python爬虫常用插件 五.使用Xpath解析 六.Xpath匹配示例 1.查看所有的标签(如p.a.li标签 ...

  2. 爬虫之 lxml模块的安装与使用示例

    爬虫之 lxml模块的安装与使用示例 lxml模块是一个第三方模块,安装之后使用 1.1 lxml模块的安装 对发送请求获取的xml或html形式的响应内容进行提取 pip/pip3 install ...

  3. 网页爬虫 python-Python爬虫解析网页的4种方式

    文章目录 爬虫的价值 正则表达式 requests-html BeautifulSoup lxml的XPath 爬虫的价值 常见的数据获取方式就三种:自有数据.购买数据.爬取数据.用Python写爬虫 ...

  4. python爬虫详细步骤-Python爬虫的两套解析方法和四种爬虫实现过程

    对于大多数朋友而言,爬虫绝对是学习 python 的最好的起手和入门方式.因为爬虫思维模式固定,编程模式也相对简单,一般在细节处理上积累一些经验都可以成功入门.本文想针对某一网页对 python 基础 ...

  5. python爬虫工程师-Python-爬虫工程师-面试总结

    对if __name__ == 'main'的理解陈述 __name__是当前模块名,当模块被直接运行时模块名为__main__,也就是当前的模块,当模块被导入时,模块名就不是__main__,即代码 ...

  6. 【Python基础】Python爬虫的两套解析方法和四种信息提取方式

    Python爬虫 Author:Iouwill Machine Learning Lab 分享一篇往日旧文章,非常实用. 对于大多数朋友而言,爬虫绝对是学习python的最好的起手和入门方式.因为爬虫 ...

  7. 爬虫的步骤解析内容xpath介绍_爬虫入门到精通-网页的解析(xpath)

    在爬虫入门到精通第五讲中,我们了解了如何用正则表达式去抓取我们想要的内容.这一章我们来学习如何更加简单的来获取我们想要的内容. xpath的解释 XPath即为XML路径语言(XML Path Lan ...

  8. Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】

    Python3 爬虫学习笔记第九章 -- [数据储存系列 - 文件储存] 文章目录 [9.1]TXT 文本存储 [9.1.1]基本示例 [9.1.2]打开方式 [9.2]JSON 文件存储 [9.2. ...

  9. python爬虫分析_Python爬虫解析网页的4种方式

    文章目录 爬虫的价值 正则表达式 requests-html BeautifulSoup lxml的XPath 爬虫的价值 常见的数据获取方式就三种:自有数据.购买数据.爬取数据.用Python写爬虫 ...

最新文章

  1. WTL中CMemDC与CDC、CDCHandle的联系
  2. 利用74LS161计数器芯片分别实现模12,模20的计数器,并在QuartusⅡ上进行仿真
  3. java 反射 参数名_JAVA 8 反射获取参数名
  4. 在听伏尔加纤夫曲 超酷
  5. C#LeetCode刷题之#374-猜数字大小(Guess Number Higher or Lower)
  6. 启动报错 classnofoundexception org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  7. mxnet 训练--如何生成rec 数据 +自己在本机测试的结果
  8. jbod ugood 磁盘驱动状态_LSI Storcli 工具使用
  9. gcc -fomit-frame-pointer选项,-fno-dwarf2-cfi-asm 选项
  10. android获取角速度,android dyrscope sensor 角速度传感器调试
  11. 大牛程序员带你走进互联网:资历深不是优势,资源才是难得的宝藏!
  12. scanf ---------未完待续
  13. 【C语言】三子棋(智能下棋 + 阻拦玩家)
  14. Oracle安装与配置(Linux)
  15. 杀疯了!本科大神毕设:3D虚拟主播软件!独创AR直播!支持OBS!开源!
  16. 如何写 [文献综述]
  17. 深度强化学习泡沫及路在何方?
  18. 在Windows中开启Wifi热点共享,无需第三方工具
  19. java用scanner循环输入_Scanner怎么实现连续输入
  20. windows下搭建NFS服务器

热门文章

  1. html5实现贪吃蛇,分享一个用html5实现的贪吃蛇特效代码
  2. 元素与核素有什么区别?
  3. pytorch torch.from_numpy()(从numpy数组创建一个张量,数组和张量共享相同内存)
  4. python PyQt5中文教程☞【第八节】PyQt5控件(II)
  5. 字典、列表、元祖、字符串的综合(1)
  6. springboot整合redis集群master宕机后连接超时
  7. linux mysql 5.5 安装_Linux 安装 mysql5.5.19
  8. Idea新建项目默认是JDK1.5解决办法
  9. 开发html5的共享单车,HTML5 SVG 共享单车(小蓝车)动画
  10. 超级计算机 红皇后,阿丽塔诺瓦不是最大反派 幕后大boss超级计算机黑化AI