IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> ECommerceCrawlers项目分析(四) -> 正文阅读

[Python知识库]ECommerceCrawlers项目分析(四)

2021SC@SDUSC

这篇博客将讲述xpath,yield以及其他parse()代码的分析

parse()代码分析先放在下面

#python类中方法的定义,注意要带self
    def parse(self, response):

        #定义item
        item = CnblogItem()

        # 使用xpath搜索
        # xpath(): 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表
        # extract(): 序列化该节点为unicode字符串并返回list
        item['title'] = response.xpath('//a[@class="titlelnk"]/text()').extract()
        item['link'] = response.xpath('//a[@class="titlelnk"]/@href').extract()

        yield item

        # offset的中文意思是偏移量。
        # 在爬虫中,offset一般用于翻页
        print("第{0}页爬取完成".format(self.offset))
        if self.offset < 10:        #爬取到第几页
            self.offset += 1
        url2 = self.url+str(self.offset)    #拼接url
        print(url2)
        yield scrapy.Request(url=url2, callback=self.parse)

一.XPath简述

(先附上博主学习XPath的文档链接:XPath教程

XPath简而言之就是对文档的元素和属性进行遍历的工具。

它使用路径表达式来遍历

比如:

/html/head/title: 选择HTML文档中 <head> 标签内的 <title> 元素
/html/head/title/text(): 选择上面提到的 <title> 元素的文字
//td: 选择所有的 <td> 元素
//div[@class="mine"]: 选择所有具有 class="mine" 属性的 div 元素

下面附上几种经常用到的路径表达式:

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

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

比如:

路径表达式结果
/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。

在函数parse()里的xpath语句就表示:

//a[@class="titlelnk"]/text()

找到所有具有 class="titlelnk" 属性的a标签元素文字

//a[@class="titlelnk"]/@href

找到所有具有 class="titlelnk" 属性的a标签元素链接

二.yield

(先附上博主学习yield的链接:python中yield的用法详解——最简单,最清晰的解释

yield简而言之就是 return。它会返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始。

三.其他关键代码分析

这两行代码:

item['title'] = response.xpath('//a[@class="titlelnk"]/text()').extract()
item['link'] = response.xpath('//a[@class="titlelnk"]/@href').extract()

分别用到了xpath()和extract()

xpath(): 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表 。

extract(): 序列化该节点为unicode字符串并返回list

简而言之就是xpath()可以执行xpath语句,选择一系列元素和属性;extract()将它们转化为文字。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-15 11:45:10  更:2021-10-15 11:46:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:59:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码