lxml 和 XPah (爬虫)
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 (爬虫)相关推荐
- Python常用插件类举,lxml+Xpath实现爬虫,使用Xpath爬取链家二手房源信息
目录 一.XPath 二.XPath 常用规则 三.在谷歌浏览器安装XPath插件 四.Python爬虫常用插件 五.使用Xpath解析 六.Xpath匹配示例 1.查看所有的标签(如p.a.li标签 ...
- 爬虫之 lxml模块的安装与使用示例
爬虫之 lxml模块的安装与使用示例 lxml模块是一个第三方模块,安装之后使用 1.1 lxml模块的安装 对发送请求获取的xml或html形式的响应内容进行提取 pip/pip3 install ...
- 网页爬虫 python-Python爬虫解析网页的4种方式
文章目录 爬虫的价值 正则表达式 requests-html BeautifulSoup lxml的XPath 爬虫的价值 常见的数据获取方式就三种:自有数据.购买数据.爬取数据.用Python写爬虫 ...
- python爬虫详细步骤-Python爬虫的两套解析方法和四种爬虫实现过程
对于大多数朋友而言,爬虫绝对是学习 python 的最好的起手和入门方式.因为爬虫思维模式固定,编程模式也相对简单,一般在细节处理上积累一些经验都可以成功入门.本文想针对某一网页对 python 基础 ...
- python爬虫工程师-Python-爬虫工程师-面试总结
对if __name__ == 'main'的理解陈述 __name__是当前模块名,当模块被直接运行时模块名为__main__,也就是当前的模块,当模块被导入时,模块名就不是__main__,即代码 ...
- 【Python基础】Python爬虫的两套解析方法和四种信息提取方式
Python爬虫 Author:Iouwill Machine Learning Lab 分享一篇往日旧文章,非常实用. 对于大多数朋友而言,爬虫绝对是学习python的最好的起手和入门方式.因为爬虫 ...
- 爬虫的步骤解析内容xpath介绍_爬虫入门到精通-网页的解析(xpath)
在爬虫入门到精通第五讲中,我们了解了如何用正则表达式去抓取我们想要的内容.这一章我们来学习如何更加简单的来获取我们想要的内容. xpath的解释 XPath即为XML路径语言(XML Path Lan ...
- Python3 爬虫学习笔记 C09【数据储存系列 — 文件储存】
Python3 爬虫学习笔记第九章 -- [数据储存系列 - 文件储存] 文章目录 [9.1]TXT 文本存储 [9.1.1]基本示例 [9.1.2]打开方式 [9.2]JSON 文件存储 [9.2. ...
- python爬虫分析_Python爬虫解析网页的4种方式
文章目录 爬虫的价值 正则表达式 requests-html BeautifulSoup lxml的XPath 爬虫的价值 常见的数据获取方式就三种:自有数据.购买数据.爬取数据.用Python写爬虫 ...
最新文章
- Sort_Buffer_Size 设置对服务器性能的影响
- php 按汉字首字母查询[转载]
- ML之K-means:基于K-means算法利用电影数据集实现对top 100 电影进行文档分类
- solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询
- a+=b不一定等于a=a+b
- composer 中国镜像
- java zip压缩_压缩工具
- LevelDB PUT/GET操作调用关系
- Flume监听文件夹中的文件变化_并把文件下沉到hdfs
- 大数据分析常用的方法有哪些
- MATLAB对表达式进行降幂排列,MATLAB上机答案.doc
- 软件工程 网络工程,职业方向是怎样的?选择之前一定要了解!
- 解决SVN没有中文选项
- php 会议室预定系统,MRBS开源会议室预订系统安装
- 搭建OA系统运维需要了解的知识?
- PX4 git submodule时:Failed to recurse into submodule path 'src/modules/uavcan/libuavcan
- 3月23日—3月27日四年级课程表
- 【致敬雷神】星星之火,可以燎原
- linux如何安装python
- sublime加动画css3,CSS3 Sublime 代码编辑器模拟
热门文章
- PHP中substr截取中文乱码解决方案
- android router不起作用,给 Arouter 优化的一些小建议
- C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt
- ffmpeg实现摄像头拉流_[FFmpeg] 如何通过实时摄像头帧图片生成 rtmp 直播流?
- 三菱fx5u编程手册_实用分享 | 三菱FX 5U特点是什么?
- 下载服务 php,文件下载: 云---php服务---pc
- 树莓派4b控制机械手臂_Raspberry Pi
- IDA插件uEmu模拟执行
- Java输入光标在printf前面_C++ 设置控制台(命令行)窗口 光标位置,及前背景颜色
- python画图视频_如何在视频文件的第一帧上画图,然后继续显示整个视频