文章目录
-
-
- XPath选择器
- 基础语法
- /:描述一个从根开始的绝对路径
- E1/E2: 选中E1子节点中的所有E2节点
- //E: 选中文档中的所有E,无论在什么位置
- E1//E2: 选中E1后代节点中的所有E2节点,无论在后代中的什么位置
- E/text(): 选中E节点的文本
- E/*: 选中E的所有元素子节点
- */E: 选中孙节点中的所有E节点
- E/@ATTR : 选中E节点中的ATTR属性值
- //@ATTR : 选中文档中所有ATTR属性
- E/@*: 选中E节点的所有属性值
- . : 选中当前节点,用来描述相对路径
- . . : 选中当前节点的父节点,用来描述相对路径
- node[谓语] : 谓语用来查找某个特定的节点或者包含某个特定值的节点
- 常用函数
- string(arg): 返回参数的字符串值,包括子孙节点
- contains(str1, str2): 判断str1中是否包含str2,返回布尔值
-
XPath选择器
XPath即XML路径语言,它是一种用来确定xml文档中某个部分位置的语言
基础语法
下面通过一个HTML文档讲解各个语法
from scrapy.selector import Selector
from scrapy.http import HtmlResponse
body = """
<html>
<head>
<base href = "http://www.baidu.com" />
<title>User23333</title>
</head>
<body>
<h1>Hello World</h1>
<h1>Hello Scrapy</h1>
<b>Hello Python</b>
<ul>
<li>Python学习手册<b>价格:99.00元</b></li>
<li>Python核心编程<b>价格:88.00元</b></li>
<li>Python基础教程<b>价格:80.00元</b></li>
</ul>
<div id = "images">
<a href = "image1.html">Name: Iamge 1</br><img src = "image1.jpg"/></a>
<a href = "image2.html">Name: Iamge 2</br><img src = "image2.jpg"/></a>
<a href = "image3.html">Name: Iamge 3</br><img src = "image3.jpg"/></a>
<a href = "image4.html">Name: Iamge 4</br><img src = "image4.jpg"/></a>
<a href = "image5.html">Name: Iamge 5</br><img src = "image5.jpg"/></a>
</div>
<ul class="pager">
<li class="current">Page 1 of 50</li>
<li class="next"><a href="catalogue/page-2.html" class="">next</a></li>
</ul>
</body>
</html>
"""
response = HtmlResponse(url="http://www.example.com", body=body, encoding='utf-8')
/:描述一个从根开始的绝对路径
print(response.xpath('/html'))
print(response.xpath('/html/head'))
E1/E2: 选中E1子节点中的所有E2节点
print