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. Sort_Buffer_Size 设置对服务器性能的影响
  2. php 按汉字首字母查询[转载]
  3. ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类
  4. solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询
  5. a+=b不一定等于a=a+b
  6. composer 中国镜像
  7. java zip压缩_压缩工具
  8. LevelDB PUT/GET操作调用关系
  9. Flume监听文件夹中的文件变化_并把文件下沉到hdfs
  10. 大数据分析常用的方法有哪些
  11. MATLAB对表达式进行降幂排列,MATLAB上机答案.doc
  12. 软件工程 网络工程,职业方向是怎样的?选择之前一定要了解!
  13. 解决SVN没有中文选项
  14. php 会议室预定系统,MRBS开源会议室预订系统安装
  15. 搭建OA系统运维需要了解的知识?
  16. PX4 git submodule时:Failed to recurse into submodule path 'src/modules/uavcan/libuavcan
  17. 3月23日—3月27日四年级课程表
  18. 【致敬雷神】星星之火,可以燎原
  19. linux如何安装python
  20. sublime加动画css3,CSS3 Sublime 代码编辑器模拟

热门文章

  1. PHP中substr截取中文乱码解决方案
  2. android router不起作用,给 Arouter 优化的一些小建议
  3. C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt
  4. ffmpeg实现摄像头拉流_[FFmpeg] 如何通过实时摄像头帧图片生成 rtmp 直播流?
  5. 三菱fx5u编程手册_实用分享 | 三菱FX 5U特点是什么?
  6. 下载服务 php,文件下载: 云---php服务---pc
  7. 树莓派4b控制机械手臂_Raspberry Pi
  8. IDA插件uEmu模拟执行
  9. Java输入光标在printf前面_C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色
  10. python画图视频_如何在视频文件的第一帧上画图,然后继续显示整个视频