爬虫数据存储:技术、策略与实践(一)

news2024/10/7 19:27:54

文章目录

  • 🍋引言
  • 🍋xlrd库和xlwt库
  • 🍋创建Excel文件
  • 🍋通过Python代码向Excel写入数据
  • 🍋案例实战

🍋引言

本节主要介绍一下在使用网络爬虫技术的时候,如何将数据存储到Excel中去

🍋xlrd库和xlwt库

xlrd(XL Read)是一个用于读取Excel文件的Python库。它支持.xls和.xlsx格式的文件,并可以提取文件中的数据、格式和元数据等信息。xlrd提供了许多功能,包括选择特定的工作表、获取单元格的值和样式、遍历工作表中的数据等。它是一个强大的工具,可用于数据分析、数据提取和数据处理等任务。

xlwt(XL Write)是一个用于创建和写入Excel文件的Python库。它支持.xls格式的文件,并允许用户创建新的工作表、添加数据、设置单元格样式等。xlwt提供了易于使用的API,使得创建和编辑Excel文件变得简单。它适用于各种应用场景,如生成报告、创建数据可视化或自动化数据处理等。

两个库的在线安装命令如下

pip install xlrd
pip install xlwt

🍋创建Excel文件

创建文件的代码较为简单,如下

import xlwt
workbook = xlwt.Workbook(encoding='utf8')

在这里插入图片描述

但是我们平时创建一个Excel文件的时候下面会有表格(sheet),所以我们不光要创建Excel对象,而且需要创建若干sheet表格,具体代码如下

sheet1 = workbook.add_sheet('sheet1')
sheet2 = workbook.add_sheet('sheet2')
sheet3 = workbook.add_sheet('sheet3')

创建完表格后,最后一步就是保存

workbook.save(r"C:\Users\Administrator\Desktop\期中成绩.xls")

这个绝对路径,教大家一个查看方法,按住shift,鼠标右键
在这里插入图片描述
运行代码后在桌面就会出现一个Excel文件
在这里插入图片描述
点进去也会发现有三个sheet表格
在这里插入图片描述

🍋通过Python代码向Excel写入数据

这里我们注意,在Excel中每个单元格的坐标是字母+数字的组合
在这里插入图片描述
但是在Python中并不是这样,具体可以参考下图
在这里插入图片描述

不同之处我们知道了,接下来上代码

sheet1.write(0, 0, 'Math')
sheet1.write(0, 1, 'English')
sheet1.write(0, 2, 'Chinese')

运行后
在这里插入图片描述
接下来我们可以简单的为单元个填充成绩,这里我们可以采用循环

for row in range(1, 20, 1):
    for col in range(0, 3, 1):
        sheet1.write(row, col, random.randint(80, 100))

运行结果如下
在这里插入图片描述

🍋案例实战

这里我们将某博的热搜作为实战对象,首先我们需要准备一个爬取此网站前期的准备

# 导入模块
import requests
from bs4 import BeautifulSoup


# 定义url和请求头
url =  'https://s.weibo.com/top/summary?display=0&retcode=6102'
_headers = {
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
                "Cookie": "SUBP=0033WrSXqPxfM72-Ws9jqgMF55529P9D9WW2kX-Z46lRbEGNeGGOqQzg; SINAGLOBAL=1879006065688.1335.1674544342950; UOR=,,www.baidu.com; SUB=_2AkMUum_nf8NxqwJRmP8cy2rkbYh1zQ_EieKi5p48JRMxHRl-yT9vqmEptRB6PzpBCFr8Nw9WHg85yXpbEGjv_BB4-91Q; _s_tentry=weibo.com; Apache=5265586173710.342.1689125693519; ULV=1689125693521:3:1:1:5265586173710.342.1689125693519:1675905464675"
            }

# 发送请求
response = requests.get(url,headers=_headers)
content = response.content.decode('utf8')
# 实例化对象
soup = BeautifulSoup(content, 'lxml')

# 提取数据
tds = soup.find_all('td',class_="td-02")[1:]
weibos = []
for td in tds:
    # 内容
    event = td.find_all('a')[0].string  # 只把对象里面的内容提取出来
    # 热度
    hot = td.find_all('span')[0].string
    weibo = {
        "event": event,
        "hot": hot
    }
    weibos.append(weibo)
print(weibos)

上面我们采用bs4进行热搜的爬取

之后我们创建一个新的Excel表格,并将sheet表格命名为微博

workbook = xlwt.Workbook(encoding='utf8')
sheet1 = workbook.add_sheet('微博')

之后我们可以使用keys进行打印出我们需要的标题

print(weibos[0].keys())

运行结果如下
在这里插入图片描述
之后我们使用zip函数搭配for循环

keys = weibos[0].keys()
for i, key in zip(range(len(keys)),keys):
    sheet1.write(0, i, key)

最后我们将爬取的数据导进去

for row in range(1, len(weibos)+1, 1):
    for col, key in zip(range(len(keys)), keys):
        sheet1.write(row, col, weibos[row-1][key])

我来讲解一下上段代码:外循环主要是行循环,range里面主要len(weibos)要加一,要不然最后一个热搜导不进去;二层循环每次将event和hot分别插入Excel中

运行结果如下
在这里插入图片描述
下节我们介绍存储为CSV文件
请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

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

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

相关文章

云原生之使用Docker部署Teedy轻量级文档管理系统

云原生之使用Docker部署Teedy轻量级文档管理系统 一、Teedy介绍1.1 Teedy简介1.2 Teedy特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Teedy镜像五、部署Teedy轻量级文…

git 本地工作区和仓库区基本使用

(1)git 本地有三个区 工作区和暂存区和 git管理的仓库. (自行动手实践理解,然后就入门了)(2)本地初次使用git做的事情,需要做如下工作 git config --global user.name "xx" git config --global user.email xxxqq.com git config --globa…

山西电力市场日前价格预测【2023-09-15】

日前价格预测 预测说明: 如上图所示,预测明日(2023-09-15)山西电力市场全天平均日前电价为338.85元/MWh。其中,最高日前电价为415.06元/MWh,预计出现在19: 15。最低日前电价为270.06元/MWh,预计…

OPC是通讯协议吗安全性

目录 1 安全防护 1.1 防火墙 1.2 网闸 2 OPC是通讯协议吗 2.1 什么通讯协议 2.2 那么OPC又是什么? OPC官方说明文档 1 安全防护 本文阐述了控制网络以OPC接口接入信息网络应当采用的安全防护。 1.1 防火墙 防火墙是大家熟知的网络安全产品,并被用作控制网…

laravel8框架-语言包的安装和配置

1, 查找 laravel框架语言包地址: \根目录\resources\lang\ 默认有个 en 语言包 2,下载 和 安装 下载地址:https://packagist.org/ 搜索 laravel/lang 参考网址:https://packagist.org/packages/overtrue/laravel-lang 选择你…

ARM Linux DIY(十一)板子名称、开机 logo、LCD 控制台、console 免登录、命令提示符、文件系统大小

文章目录 前言板子名称uboot Modelkernel 欢迎词、主机名 开机 logoLCD 控制台console 免登录命令提示符文件系统大小 前言 经过前面十篇文章的介绍,硬件部分调试基本完毕,接下来的文章开始介绍软件的个性化开发。 板子名称 uboot Model 既然是自己的…

Games101作业0(vscode连接VB虚拟机)

作业0 配置环境: 基本配置在pa0中都有,下面介绍使用vscode连接VB虚拟机快捷开发 vscode连接VB虚拟机 1.用户名 可以看到Username为cs18并非为css180 2.密钥 在window主机生成密钥 ssh-keygen #一路回车3.VB虚拟机配置ssh sshd_config配置 cd /etc/ssh/ vim sshd_confi…

丰田工厂停产竟然因为磁盘...

丰田因磁盘空间不足关闭14家工厂 在如今的信息时代,无论是生活还是工作,我们都离不开计算机和网络。然而,令人惊讶的是,一家全球知名的汽车制造商——丰田,却因为磁盘空间不足的问题,被迫关闭了14家工厂。…

DP专题2 爬楼梯|

题目: 思路: 根据题意,我们先找到对应的 n 阶台阶的方案数是多少。 n 1 f(n) 1 n 2 f(n) 2 n 3 f(n) 3 n 4 f(n) 5 n 5 f(n) 8 ...... ...... n n f(n) f(n - 2) f(n - 1…

读高性能MySQL(第4版)笔记09_创建高性能索引(下)

1. 覆盖索引 1.1. 设计优秀的索引应该考虑到整个查询,而不单是WHERE条件部分 1.2. 如果一个索引包含(或者说覆盖)所有需要查询的字段的值,我们就称之为覆盖索引 1.3. 只有B-tree索引可以用于覆盖索引 1.4. 如果查询只需要扫描…

用Python实现链式调用

嗨喽,大家好呀~这里是爱看美女的茜茜呐 我们在使用Django的models查询数据库时,可以看到有这种写法: form app.models import XXX query XXX.objects.all() query query.filter(name123, age456).filter(salary999)在这种写法里面&#xf…

matlab根轨迹绘制

绘制根轨迹目的就是改变系统的闭环极点,使得系统由不稳定变为稳定或者使得稳定的系统变得更加稳定。 在使用PID控制器的时候,首先要确定的参数是Kp,画成框图的形式如下: 也就是想要知道Kp对系统性能有哪些影响,此时就…

go 包的引入

本文介绍下下go包的管理,以linux平台为例。 先看下目录结构: test目录下的test.go test2目录下的test.go 主函数的调用 此时执行会报错,需要用mod进行包的管理,执行下面命令 go mod init godir 生成go.mod文件 执行结果:

【MySQL】mysql中有哪几种类型的备份技术?它们各自有什么优缺点?

为什么要备份?备份类型(从类型的角度)备份技术(从技术手段的角度)不同备份方法的比较感谢 💖 为什么要备份? 数据库或它所在的平台可能会出现问题,这时候数据库中的数据可能就遭到了…

春秋云镜 CVE-2014-4577

春秋云镜 CVE-2014-4577 wordpress插件 wp-amasin-the-amazon-affiliate-shop < 0.97 LFI 靶标介绍 wordpress插件 wp-amasin-the-amazon-affiliate-shop < 0.97 存在路径穿越漏洞&#xff0c;使得可以读取任意文件。 启动场景 漏洞利用 exp http://url/wp-content/…

【Transformer系列】深入浅出理解Embedding(词嵌入)

一、参考资料 一文读懂Embedding的概念&#xff0c;以及它和深度学习的关系 论文 [1] Attention is All you Need 二、Embedding相关介绍 Embedding&#xff0c;直译是词嵌入、嵌入层。 1. 引言 2. one-hot编码 假设&#xff0c;中文有10个字 “星 巴 克 喜 欢 瑞 幸 的…

LinuxFTP云盘-文件服务系统

目录 1.项目介绍 2.项目运行展示 3.实现思路 服务端&#xff1a; 客户端&#xff1a; 4.相关调用函数 socket()&#xff1a;创建一个网络通信端点原型&#xff1a;int socket(int domain, int type, int protocol); atoi()&#xff1a;将字符串转变成整型数据原型&…

【C刷题】day2

一、选择题 1、以下程序段的输出结果是&#xff08; &#xff09; #include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; } A: 12 B: 13 C: 16 D: 以上都不对【答案】&#xff1a; A 【解析】…

黑马JVM总结(八)

&#xff08;1&#xff09;StringTable面试题 1.8 1.6时 &#xff08;2&#xff09;StringTable的位置 jvm1.6时StringTable是常量池的一部分&#xff0c;它随着常量池存储在永久代当中&#xff0c;在1.7、1.8中从永久代变成了堆中&#xff0c;为什么做这个更改呢&#xff1f…

c语言每日一练(15)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;上学期间将看学业情况更新。 五道选择题&#xff1a; 1、程序运行的结果…