Xpath语法简介

  Xpath是一款非常强大的XML/HTML解析框架,它能够将XML/HTML解析为类似于目录树的形式,叶子节点就是对应属性,而访问这些属性就和linux中的文件系统类似,以下列出部分语法,案例使用百度首页的部分html源码:

<head class=""> 
<script async="" src="https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/every_cookie_4644b13.js"></script>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" class="">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" class="">
...
<title class="">百度一下,你就知道 </title>
<link rel="stylesheet" id="s_superplus_css_lnk" type="text/css" href="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/css/super_min_0833ec50.css">
<link rel="stylesheet" type="text/css" href="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/mancard/css/card_min_dee38e45.css">
<script class="">
window.sysTime=1538755883;
_manCard = {
	asynJs : [],
	asynLoad : function(id){
		_manCard.asynJs.push(id);
	}
};
</script>
</head>

  例如此时我们获取到了这部分html,我们相关语法如下:

  • 获取所有link标签的内容:/html/head/link
  • 获取link标签中的href超链接地址:
/html/head/link/@href   (这里如果有多个link则会获取一个列表的url链接)
  • 某个标签如果获取了多个,取其中第二个:
/html/head/link[2]
  • 获取title中的文本内容:/html/head/title/text()

  以上是最基本的用法,还有一种十分常见的场景是,现在爬取到了一个html,这个html例如是豆瓣中的评论回复,假设每个人的评论回复是一个<ul>表单下的<li>这一列,具体就是:

<ul id="jdg_list" xxx...>
    <li class>...</li>
    <li class>...</li>
    <li class>...</li>
    <li class>...</li>
</ul>
<ul id="xxxx" ...>
    <li class>...</li>
    <li class>...</li>
    <li class>...</li>
</ul>

  如上页面上相同的标签可能还会有别的地方也有,但是我只想要获取id="jdg_list"的这个表单中的列表内容,而对于其它地方用到的ul标签中的数据,我们是不要的,此时的语法是通过//@配合使用,具体语法:

//ul[@id="jdg_list"]/li

  通过这种方式就获取到该数据了,但是还有一点对于//而言,如果有/path//tag这种用法表示在/path标签路径下,获取所有的tag标签的内容。
更多详细语法可以参考w3cSchool网站介绍:http://www.w3school.com.cn/xpath/xpath_syntax.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值