python爬虫系列5--xpath

教程地址:http://www.runoob.com/xpath/xpath-tutorial.html

XPath在python的爬虫学习中,起着举足轻重的地位,对比正则表达式re两者可以完成同样的工作,实现的功能也差不多,但XPath明显比re具有优势,在网页分析上使re退居二线。

xpath全称为XML Path Language 一种小型的查询语言,所具备的优点:

1) 可在XML中查找信息

2) 支持HTML的查找

3) 通过元素和属性进行导航

XPath属于lxml库模块,所以首先要安装库lxml。

简单示例:

from lxml import etree

selector=etree.HTML(源码) #将源码转化为能被XPath匹配的格式

selector.xpath(表达式) #返回为一列表

+ xpath与bs4比较

(1)bs4是用python写的第三方库,XPath是一门语言,lxml是用c写的,速度块;

(2)xpath要求一定清楚文档层次结构,它通过元素和属性进行导航,可以使用绝对路径或相对路径查找,而bs4不必清楚文档结构,可以直接找某些标签,简单粗暴。


+ 路径表达式

nodename 选取此节点的所有子节点。

/ 从根节点选取。

// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

. 选取当前节点。

.. 选取当前节点的父节点。

@ 选取属性。

/text() 获取当前路径下的文本内容

starts-with 解决标签属性值以相同字符串开头的情况


+ 谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中。


+ 通配符

* 匹配任何元素节点。

@* 匹配任何属性节点。

node() 匹配任何类型的节点。

| 选取若干路径


+ 轴

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

ancestor 选取当前节点的所有先辈(父、祖父等)。

ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。

attribute 选取当前节点的所有属性。

child 选取当前节点的所有子元素。

descendant 选取当前节点的所有后代元素(子、孙等)。

descendant-or-self 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。

following 选取文档中当前节点的结束标签之后的所有节点。

following-sibling 选取当前节点之后的所有兄弟节点

namespace 选取当前节点的所有命名空间节点。

parent 选取当前节点的父节点。

preceding 选取文档中当前节点的开始标签之前的所有节点。

preceding-sibling 选取当前节点之前的所有同级节点。

self 选取当前节点。


+ 运算符

算术运算符、关系运算符、逻辑运算符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值