『scrapy爬虫』04. 使用管道将数据写入excel(详细注释步骤)

目录

    • 1. excel文件的初始化与保存
    • 2. 配置管道使用
    • 运行测试
    • 总结


欢迎关注 『scrapy爬虫』 专栏,持续更新中
欢迎关注 『scrapy爬虫』 专栏,持续更新中

1. excel文件的初始化与保存

安装操作excel文件的库

pip install openpyxl

钩子函数(Hook functions)是指在特定事件发生或特定条件满足时自动调用的函数。在编程中,钩子函数通常用于扩展或自定义框架、库或应用程序的行为,允许开发人员在关键点注入自己的逻辑。

引入概念,钩子函数(callback),这里的close_spiderprocess_item都不是我们主动调用的函数,当我们在前面的spider中vield数据时候,自动触发了process_item,当我们结束爬虫的时候,自动运行了process_item.

pipelines.py

import openpyxlclass MyscrapyPipeline:# 初始化我们的excel文件def __init__(self):self.wb=openpyxl.Workbook()self.ws=self.wb.active #拿到默认的被激活的工作表self.ws.title="top250" #工作表的名字改为 top250self.ws.append(("标题","评分","主题")) #增加表头# 开始爬虫时候要进行的操作def open_spider(self,spider):pass# 关闭爬虫时候要进行的操作def close_spider(self,spider):#保存Excel文件self.wb.save("电影数据.xlsx")#关闭工作簿(Workbook)和工作表(Worksheet)self.wb.close()# ,"process_item" 是用于处理爬取到的数据并进行后续处理的方法,item是我们前面yeild返回的数据def process_item(self, item, spider):title=item.get("title","")score=item.get("score","")quato=item.get("quato","")self.ws.append((title,score,quato))#将得到的数据一行写入excelreturn item

2. 配置管道使用

settings.py
在这里插入图片描述

# 配置数据管道
# 配置数据管道
ITEM_PIPELINES = {'myscrapy.pipelines.MyscrapyPipeline': 300, #数字越小先执行,后期可以有多个管道# '你的项目名.pipelines.刚刚管道的写的类名': 权重, #权重越小先执行,后期可以有多个管道
}

运行测试

注意运行都要在虚拟环境下运行,如果你用了虚拟环境的话,不知道为什么我一开始明明pycahrm都能显示安装好了openpyxl,实际上运行后提示没有模块,我在虚拟环境里pip install openpyxl一波就好了

activate(进入虚拟环境)
scrapy crawl douban

执行启动命令

scrapy crawl douban

在这里插入图片描述


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2024 mzh

Crated:2024-3-1

欢迎关注 『scrapy爬虫』 专栏,持续更新中
欢迎关注 『scrapy爬虫』 专栏,持续更新中
『未完待续』


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/745971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

✅技术社区—MySQL和ES的数据同步策略

使用Canal框架实现MySQL与Elasticsearch(ES)的数据同步确实可以提高实时搜索的准确性和效率。Canal通过模拟MySQL的binlog日志订阅和解析,实现了数据的实时同步。在这样的同步机制下,ES中的数据可以非常接近于MySQL数据库中的实时…

非阻塞 IO多路复用

非阻塞 & IO多路复用 一、非阻塞 socket都是会阻塞的 在等待连接以及等待接收数据的时候进入一个阻塞状态 # 服务端 import socketphone socket.socket(socket.AF_INET , socket.SOCK_STREAM) phone.bind((127.0.0.1 , 8080)) phone.listen(5)# 设置非阻塞状态 phone.…

【MySQL性能优化】- 一文了解MVCC机制

MySQL理解MVCC 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得,欢迎指正&#xff…

【Qt】QListView 显示富文本,设置文本内容颜色

【Qt】QListView 显示富文本,设置文本内容颜色 文章目录 I - 控件使用II - 显示富文本III - 注意事项 I - 控件使用 Qt 的 MVC 架构为 MV ,Controller 部分继承到了 View 里,View(视图) 设置 Model(模型),Model 设置数据 这里使用…

NTP网络时间服务器的妙用?让网络更精准

NTP网络时间服务器的妙用?让网络更精准 NTP网络时间服务器的妙用?让网络更精准 随着计算机网络的迅猛发展,网络应用已经非常普遍,众多领域的网络系统如电力、石化、金融业(证券、银行)、广电业&#xff08…

工作中Git如何切换远程仓库地址

工作中Git如何切换远程仓库地址 部门之前的仓库不用了,重新建了一个仓库,但是上传代码还是上传到了之前的仓库里面了,所以得进行修改,下面将修改地址的方法进行操作。 方法一、直接修改远程仓库地址 查看当前远程仓库地址 git …

ideaSSM校医院管理网页模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 校医院管理系统是一套完善的完整信息管理系统,结合SSM框架完成本系统SpringMVC spring mybatis ,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发), 系统具有完整的源代码和数据…

C# tcp通信连接正常判断

在 C# 中,你可以使用 TcpClient 类来进行 TCP 连接的管理。你可以编写一个循环来尝试连接,以及检测连接是否正常。以下是一个简单的示例代码,演示如何实现这一功能: using System; using System.Net.Sockets; using System.Threa…

前端跨页面通信的几种方式---同源

参考链接 1、LocalStorage:当 LocalStorage 变化时,会触发storage事件。利用这个特性,我们可以在发送消息时,把消息写入到某个 LocalStorage 中;然后在各个页面内,通过监听storage事件即可收到通知。 2、BroadCast C…

Java实现知乎热点小时榜爬虫

1.效果演示 1.1 热点问题列表 启动程序后&#xff0c;自动展示热点问题&#xff0c;并等待终端输入 1.2 根据序号选择想看的热点问题 输入问题序号&#xff0c;展示回答内容 1.3 退出 输入q即可退出程序 2.源码 2.1 pom.xml <?xml version"1.0" enco…

Spring Boot 获取maven打包时间

引入maven打包插件 <build><plugins><!-- 打包时生成打包时间 --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>buildnumber-maven-plugin</artifactId><version>3.2.0</version><configuration&…

perl 用 XML::LibXML 解析 Freeplane.mm文件,XML文件

Perl 官网 www.cpan.org 从 https://strawberryperl.com/ 下载网速太慢了 建议从 https://download.csdn.net/download/qq_36286161/87892419 下载 strawberry-perl-5.32.1.1-64bit.zip 约105MB 解压后安装.msi&#xff0c;装完后有520MB&#xff0c;建议安装在D:盘 在云计算…

kotlin 程序 编译与执行

准备kotlin环境 Ubuntu安装kotlin 1. 创建一个名为 hello.kt 文件&#xff0c;代码如下&#xff1a; fun main(args: Array<String>) {println("Hello, World!") }2. 使用 Kotlin 编译器编译应用 kotlinc hello.kt -include-runtime -d hello.jar-d: 用来设…

java数据结构与算法刷题-----LeetCode46. 全排列

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 暴力回溯2. 分区法回溯 1. 暴力回溯 解题思路&#xff1a;时…

Linux下JSON解析工具

jq&#xff1a;是一个强大的命令行工具&#xff0c;用于处理 JSON 格式的数据。它可以帮助你查询、过滤、修改和处理 JSON 数据&#xff0c;使得再命令行环境下处理 JSON 变得非常方便。 官方下载地址&#xff1a; https://jqlang.github.io/jq/download/ 官方文档&#xff1…

Python和MATLAB数字信号波形和模型模拟

要点 Python和MATLAB实现以下波形和模型模拟 以给定采样率模拟正弦信号&#xff0c;生成给定参数的方波信号&#xff0c;生成给定参数隔离矩形脉冲&#xff0c;生成并绘制线性调频信号。快速傅里叶变换结果释义&#xff1a;复数离散傅里叶变换、频率仓和快速傅里叶变换移位&am…

【软考高项】六、信息技术发展之计算机网络知识点

1、网络作用划分 个人局域网(PAN)、局域网(LAN)、城域网(MAN)、广域网(WAN)、公用网、专用网。 2、OSI七层 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 3、广域网协议类型 PPP点对点协议、ISDN综合业务数字网、xDSL(DSL数字用户线路的统称:HDSL.SDSL、M…

Python中Pandas常用函数及案例详解

Pandas是一个强大的Python数据分析工具库&#xff0c;它为Python提供了快速、灵活且表达能力强的数据结构&#xff0c;旨在使“关系”或“标签”数据的操作既简单又直观。Pandas的核心数据结构是DataFrame&#xff0c;它是一个二维标签化数据结构&#xff0c;可以看作是一个表格…

04- 基于SpringAMQP封装RabbitMQ,消息队列的Work模型和发布订阅模型

SpringAMQP 概述 使用RabbitMQ原生API在代码中设置连接MQ的参数比较繁琐,我们更希望把连接参数写在yml文件中来简化开发 SpringAMQP是基于AMQP协议定义的一套API规范,将RabbitMQ封装成一套模板用来发送和接收消息 AMQP(Advanced Message Queuing Portocol)是用于在应用程序…