> 웹 프론트엔드 > HTML 튜토리얼 > XPath备忘_html/css_WEB-ITnose

XPath备忘_html/css_WEB-ITnose

WBOY
풀어 주다: 2016-06-21 08:51:32
원래의
1216명이 탐색했습니다.

最近写了几个scrapy的爬虫程序,里面用到了xpath,写个日志记录一下用法。

XPath是什么

XPath是一种用于xml、html等结构化文档中寻址定位特定元素等描述性语言

XPath主要功能

下面以如下测试文档为例进行说明:

<html>    <body>        <contents id="content">        <para><a href="one.html" class="normal-link">One</a></para>        <para><a href="two.html" class="normal-link">Two</a></para>        <para><a href="three.html" class="ex-link">Three</a></para>        </contents>    </body></html>
로그인 후 복사

精确路径寻址

指通过精确制定的路径取得元素。例如

和unix文件系统概念一致,有如下几种定位方式:

  • 绝对路径, /html/body/contents/para能查找出文档中的三个para元素
  • 相对路径,在 /html/body路径下, /contents/para同样也能查找出这三个para元素
  • 父级路径, .表示当前路径, ..表示当前路径的父级路径

模糊路径寻址

不需要指定绝对路径或根据当前路径确定的相对路径,只需要指定某个子结构,就能查找出所有符合这个子结构的元素。如

  • //contents/para在任何路径下,都能查找到 整个文档下的这三个para元素
  • .//contents/para能在当前路径下,查找到子节点中任何符合 contents/para结构的元素

节点属性匹配

格式:元素[@属性="xxx"]

  • a[@class="normal-link"]能查找出两个有带normal-link class的a链
  • para[a/@class="ex-link"]能查找出一级子元素中有带ex-link class的a链的para元素,这里就是 Three

属性选择

查找某个元素中的特定属性值,如: a[@class="ex-link"]/@href能读取第三个a链的href值

内置函数

  • node(),返回任意种类的节点。比如和内置关键字 child组合成 /html/body/contents/child::node(),可以选择所有的para节点
  • text(),返回节点中包含的文本。 /html/body/contents/para/a[@class="ex-link"]/text()返回Three。特别的,和模糊路径寻址配合,如 /html/body/contents//text(),能返回contents下的 One Two Three字符串
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿