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

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手