爬虫入门到精通_框架篇18(Scrapy中选择器用法)_sector,xpath,css,re

本文主要是介绍爬虫入门到精通_框架篇18(Scrapy中选择器用法)_sector,xpath,css,re,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官方文档

Using selectors

To explain how to use the selectors we’ll use the Scrapy shell (which provides interactive testing) and an example page located in the Scrapy documentation server:
https://docs.scrapy.org/en/latest/_static/selectors-sample1.html
在这里插入图片描述

<!DOCTYPE html><html><head><base href='http://example.com/' /><title>Example website</title></head><body><div id='images'><a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' alt='image1'/></a><a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' alt='image2'/></a><a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' alt='image3'/></a><a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' alt='image4'/></a><a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' alt='image5'/></a></div></body>
</html>

进入命令行交互模式:

scrapy shell https://docs.scrapy.org/en/latest/_static/selectors-sample1.html

在这里插入图片描述
输入

response.selector

输出:request内置的selector选择器
在这里插入图片描述

XPath选择器

let’s construct an XPath for selecting the text inside the title tag:

response.xpath("//title/text()")

输出选择器与内容.
在这里插入图片描述

css选择器

response.css("title::text").get()

在这里插入图片描述

xpath和css的运用

xpath查找images标签

response.xpath('//div[@id="images"]')

在这里插入图片描述

response.xpath('//div[@id="images"]').css("img")

在这里插入图片描述
css可以用::attr()获取属性:

response.xpath('//div[@id="images"]').css("img::attr(src)").extract()

在这里插入图片描述
default:查不到内容返回default里内容
在这里插入图片描述
href标签:
在这里插入图片描述

contains

找属性名称包含image的所有的超链接可以使用contains选项,第一个参数是属性名,第二个属性是要查找的值

response.xpath('//a[contains(@href,"image")]/@href').extract()

在这里插入图片描述
CSS的写法:

response.css('a[href*=image]::attr(href)').extract()

在这里插入图片描述
假如我们要选择所有a标签里的img里面的src属性,用上contains:

response.xpath('//a[contains(@href,"image")]/img/@src').extract()

在这里插入图片描述
CSS:注意[]之后要有空格

response.css('a[href*=image] img::attr(src)').extract()

在这里插入图片描述

正则表达式

提取内容
在这里插入图片描述
提取冒号后的内容,就需要正则表达式了,注意,\用来对:进行转义。

 response.css('a::text').re('Name\:(.*)')

在这里插入图片描述
与extract()方法类似,re也提供了取得列表中第一个元素的方法:re_first()

response.css('a::text').re_first('Name\:(.*)')

在这里插入图片描述
进一步地,可以使用strip()方法,去掉返回结果中前后的空格:

response.css('a::text').re_first('Name\:(.*)').strip()

在这里插入图片描述

小结

response为我们提供了几个提取方法:

  • xpath
  • CSS
  • re

返回的结果都是Selector类型,可以进行嵌套循环。
a) 对css来说:

  • 获取a标签中的文本内容:response.css(‘a::text’)
  • 获取a标签中的某个属性:response.css(‘a::attr(属性)’)

(b)对xpath来说:

  • 获取a标签中的文本内容:response.xpath(‘//a/text()’)
  • 获取a标签中的某个属性:response.xpath(‘//a/@href’)

两种选择方法,写法不同,效果类似。

要从selector变为数据,则在后面加上.extract() 或 .extract()_first() 或.extract()[x](x为list中元素的下标)。
如果要提取更具体的信息,可以用正则表达式的方法,在后面加上 .re() 或 .re()_first 进行嵌套选择。

这篇关于爬虫入门到精通_框架篇18(Scrapy中选择器用法)_sector,xpath,css,re的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/809617

相关文章

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

javascript fetch 用法讲解

《javascriptfetch用法讲解》fetch是一个现代化的JavaScriptAPI,用于发送网络请求并获取资源,它是浏览器提供的全局方法,可以替代传统的XMLHttpRequest,这篇... 目录1. 基本语法1.1 语法1.2 示例:简单 GET 请求2. Response 对象3. 配置请求

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

mysql中的group by高级用法详解

《mysql中的groupby高级用法详解》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,本文给大家介绍mysql中的groupby... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos