爬虫入门到精通_框架篇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

相关文章

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

Java中的CompletableFuture核心用法和常见场景

《Java中的CompletableFuture核心用法和常见场景》CompletableFuture是Java8引入的强大的异步编程工具,支持链式异步编程、组合、异常处理和回调,介绍其核心用法,通过... 目录1、引言2. 基本概念3. 创建 CompletableFuture3.1. 手动创建3.2.

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

SpringCloud Stream 快速入门实例教程

《SpringCloudStream快速入门实例教程》本文介绍了SpringCloudStream(SCS)组件在分布式系统中的作用,以及如何集成到SpringBoot项目中,通过SCS,可... 目录1.SCS 组件的出现的背景和作用2.SCS 集成srping Boot项目3.Yml 配置4.Sprin

Python多任务爬虫实现爬取图片和GDP数据

《Python多任务爬虫实现爬取图片和GDP数据》本文主要介绍了基于FastAPI开发Web站点的方法,包括搭建Web服务器、处理图片资源、实现多任务爬虫和数据可视化,同时,还简要介绍了Python爬... 目录一. 基于FastAPI之Web站点开发1. 基于FastAPI搭建Web服务器2. Web服务

Java序列化之serialVersionUID的用法解读

《Java序列化之serialVersionUID的用法解读》Java序列化之serialVersionUID:本文介绍了Java对象的序列化和反序列化过程,强调了serialVersionUID的作... 目录JavChina编程a序列化之serialVersionUID什么是序列化为什么要序列化serialV

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2