scrapy Xpath表达式

XPath是什么
  • XPath 使用路径表达式在xml文档中进行导航
  • 包含一个标准函数库
  • 是xslt中的主要元素
  • 是一个w3c标准
节点

在XPath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。

节点关系

父: 每个元素及属性都有一个父。
子:元素节点可有零个、一个或多个子。
同胞:拥有相同的父的节点。
先辈:某个节点的父、父的父、等
后代:某个节点的子、子的子、等

XPath的语法

XPath使用路径表达式来选取xml文档中的节点或者节点集。
选取节点表达式:

表达式描述
nodename选取此节点的所有子节点
/从根节点上选取
//从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
.选取当前节点
选取当前节点的父节点
@选取属性
谓语

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

路径表达式结果
/bookstore/book[1]选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()]选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()< 3]选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang]选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang=‘eng’] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00]选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。
选取未知节点
通配符描述
*匹配任何元素节点
@*匹配任何属性节点
node()匹配任何类型的节点

实例:

路径表达式结果
/bookstore/*选取bookstore元素的所有子元素
//*选取文档中的所有元素
//title[@*]选取所有带属性的title元素
选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

XPath Axes(轴)

我感觉这个没有上面的方便 ,就暂时不介绍了 以后用到了再来梳理一遍

XPath运算符

运算符描述实例返回值
+加法6 + 410
-减法6 - 42
*乘法6 * 424
div除法8 div 42
=等于price=9.80如果 price 是 9.80,则返回 true。如果 price 是 9.90,则返回 false。
!=不等于price!=9.80如果 price 是 9.90,则返回 true。如果 price 是 9.80,则返回 false。
<小于price<9.80如果 price 是 9.00,则返回 true。如果 price 是 9.90,则返回 false。
<=小于或等于price<=9.80如果 price 是 9.00,则返回 true。如果 price 是 9.90,则返回 false。
>大于price>9.80如果 price 是 9.90,则返回 true。如果 price 是 9.80,则返回 false。
>=大于或等于price>=9.80如果 price 是 9.90,则返回 true。如果 price 是 9.70,则返回 false。
orprice=9.80 or price=9.70如果 price 是 9.80,则返回 true。如果 price 是 9.50,则返回 false。
andprice>9.00 and price<9.90如果 price 是 9.80,则返回 true。如果 price 是 8.50,则返回 false。
mod计算除法的余数5 mod 21
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以为您解答这个问题。 首先,我们需要创建一个Scrapy项目,使用命令`scrapy startproject kaoyan`,其中"kaoyan"为项目名称。然后在项目下创建一个Spider,使用命令`scrapy genspider kaoyan_spider kaoyan.com`,其中"kaoyan_spider"为Spider名称,"kaoyan.com"为需要爬取的网站域名。 接下来,在Spider中实现xpath翻页爬取。具体代码如下: ```python import scrapy class KaoyanSpider(scrapy.Spider): name = 'kaoyan_spider' allowed_domains = ['kaoyan.com'] start_urls = ['https://www.kaoyan.com/news/'] def parse(self, response): # 实现xpath爬取 data = response.xpath("你需要爬取的数据的xpath表达式") # 处理爬取到的数据 yield { "data": data } # 实现翻页 next_page = response.xpath("下一页的xpath表达式").get() if next_page: next_url = response.urljoin(next_page) yield scrapy.Request(next_url, callback=self.parse) ``` 在代码中,我们首先实现了xpath爬取,将爬取到的数据通过yield语句传给管道进行处理。然后,我们实现了翻页部分,找到下一页的xpath表达式并使用response.urljoin()方法构造下一页的URL,再使用Scrapy.Request()方法发送请求并指定回调函数为parse,从而实现翻页爬取。 需要注意的是,Scrapy框架已经实现了一些常见的翻页方法,例如使用LinkExtractor实现翻页,使用CrawlSpider继承类实现翻页等等。因此,在实际开发中可以根据具体情况选择最适合的翻页方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值