文档章节

Python爬虫:Xpath语法笔记

j_hao104
 j_hao104
发布于 2016/03/17 17:53
字数 776
阅读 5678
收藏 65

一、选取节点

常用的路劲表达式:

 

表达式 描述 实例  
nodename 选取nodename节点的所有子节点 xpath('//div') 选取了div节点的所有子节点
/ 从根节点选取 xpath('/div') 从根节点上选取div节点
// 选取所有的当前节点,不考虑他们的位置 xpath('//div') 选取所有的div节点
. 选取当前节点 xpath('./div') 选取当前节点下的div节点
.. 选取当前节点的父节点 xpath('..') 回到上一个节点
@ 选取属性 xpath('//@calss') 选取所有的class属性

 

二、谓语

谓语被嵌在方括号内,用来查找某个特定的节点或包含某个制定的值的节点

实例:

 

表达式 结果
xpath('/body/div[1]') 选取body下的第一个div节点
xpath('/body/div[last()]') 选取body下最后一个div节点
xpath('/body/div[last()-1]') 选取body下倒数第二个div节点
xpath('/body/div[positon()<3]') 选取body下前两个div节点
xpath('/body/div[@class]') 选取body下带有class属性的div节点
xpath('/body/div[@class="main"]') 选取body下class属性为main的div节点
xpath('/body/div[price>35.00]') 选取body下price元素值大于35的div节点

 

三、通配符

Xpath通过通配符来选取未知的XML元素

 

表达式 结果
xpath('/div/*') 选取div下的所有子节点
xpath('/div[@*]') 选取所有带属性的div节点

 

四、取多个路径

使用“|”运算符可以选取多个路径

 

表达式 结果
xpath('//div|//table') 选取所有的div和table节点

 

五、Xpath轴

轴可以定义相对于当前节点的节点集

轴名称 表达式 描述
ancestor xpath('./ancestor::*') 选取当前节点的所有先辈节点(父、祖父)
ancestor-or-self xpath('./ancestor-or-self::*') 选取当前节点的所有先辈节点以及节点本身
attribute xpath('./attribute::*') 选取当前节点的所有属性
child xpath('./child::*') 返回当前节点的所有子节点
descendant xpath('./descendant::*') 返回当前节点的所有后代节点(子节点、孙节点)
following xpath('./following::*') 选取文档中当前节点结束标签后的所有节点
following-sibing xpath('./following-sibling::*') 选取当前节点之后的兄弟节点
parent xpath('./parent::*') 选取当前节点的父节点
preceding xpath('./preceding::*') 选取文档中当前节点开始标签前的所有节点

 

preceding-sibling xpath('./preceding-sibling::*') 选取当前节点之前的兄弟节点
self xpath('./self::*') 选取当前节点

 

六、功能函数    

使用功能函数能够更好的进行模糊搜索

 

函数 用法 解释
starts-with xpath('//div[starts-with(@id,"ma")]') 选取id值以ma开头的div节点
contains xpath('//div[contains(@id,"ma")]') 选取id值包含ma的div节点
and xpath('//div[contains(@id,"ma") and contains(@id,"in")]') 选取id值包含ma和in的div节点
text() xpath('//div[contains(text(),"ma")]') 选取节点文本包含ma的div节点
     

 

scrapy xpath文档:http://doc.scrapy.org/en/0.14/topics/selectors.html 

© 著作权归作者所有

共有 人打赏支持
j_hao104
粉丝 202
博文 67
码字总数 101848
作品 2
程序员
私信 提问
一个月入门Python爬虫,快速获取大规模数据

数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣、知乎:爬取优质答案,筛选出各话题下热门内容,探索...

Python开发者
04/25
0
0
Python爬虫入门 | 2 爬取豆瓣电影信息

  这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源。看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今...

Web前端社区
07/25
0
0
学python就知道天天爬妹子图,营养是真的跟不上啊

作为Python的初学者,爬虫肯定是入门的不二选择,既能熟悉语法,又能通过爬虫了解一定的网络编程知识。 标网站:www.mmjpg.com 如果你现在已经打开了这个网站,求求你们,把持住自己!!! ...

python达人
04/11
0
0
Scrapy:根据目录来下载github上的文件

写在前面 最近在学习Python的语法,刷刷LeetCode什么的。熟悉之后,就想着写一个爬虫实际运用一下。 如何入门 Python 爬虫? - 高野良的回答 - 知乎 知乎了一下,然后看了scrapy的文档 ,就开...

ditclear
06/14
0
0
Python爬虫如何快速上手,并达到爬取大规模数据的水平

互联网的数据爆炸式的增长,而利用 Python 爬虫我们可以获取大量有价值的数据: 1.爬取数据,进行市场调研和商业分析 爬取知乎优质答案,筛选各话题下最优质的内容; 抓取房产网站买卖信息,...

技术小能手
06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用any-loader封装jQuery的XHR —— 随便写着玩系列

哎,都说没人用JQuery啦,叫你别写这个。 其实我也是好高骛远使用过npm上某个和某个很出名的XHR库,嗯,认识我的人都知道我喜欢喷JQ,以前天天喷,见面第一句,你还用JQ,赶紧丢了吧。但我也...

曾建凯
39分钟前
0
0
聊聊storm的AggregateProcessor的execute及finishBatch方法

序 本文主要研究一下storm的AggregateProcessor的execute及finishBatch方法 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout......

go4it
今天
3
0
大数据教程(7.5)hadoop中内置rpc框架的使用教程

博主上一篇博客分享了hadoop客户端java API的使用,本章节带领小伙伴们一起来体验下hadoop的内置rpc框架。首先,由于hadoop的内置rpc框架的设计目的是为了内部的组件提供rpc访问的功能,并不...

em_aaron
今天
5
0
CentOS7+git+github创建Python开发环境

1.准备CentOS7 (1)下载VMware Workstation https://pan.baidu.com/s/1miFU8mk (2)下载CentOS7镜像 https://mirrors.aliyun.com/centos/ (3)安装CentOS7系统 http://blog.51cto.com/fengyuns......

枫叶云
昨天
3
0
利用ibeetl 实现selectpicker 的三级联动

1. js 直接写在html页面上面,ibeetl 就可以动态地利用后台传上来的model List ,不需要每次点击都要ajax请求后台 2. 使用selectpicker 的时候,除了对selecct option的动态处理后,还需要 $("#...

donald121
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部