CSDN热榜分析5:导入数据库

news/2024/7/24 11:21:02 标签: 数据库, sqlite3, CSDN, 热榜

文章目录

    • 表头设计
    • 测试

表头设计

其实一天的热榜根本说明不了任何问题,而若每天都爬取一遍热榜,那么如何存储爬取到的数据,就成了一个问题。

python标准库中提供了轻量的文件型数据库sqlite3,就是为了这个问题而生的。因为热榜一共也就1000来篇博客,每天查一遍,10年也才不到4M条数据,sqlite3完全没问题。

选定使用数据库之后,首先就得设计表头。热榜的表头之前在存储csv的时候就已经写过了

["序号", "标题", "作者", "浏览", "评论", "收藏", "热度"]

考虑到领域热榜,那么还需要加上一个领域。

另外,如果每天都要查一遍的话,那么至少还得加上日期;如果每天不止查一遍,那就得加上时间了。

所以创建表头的方法如下

import sqlite3

conn = sqlite3.connect('heat.db')

# 此为表头
HEADS = 'create table heat (日期 int, 时间 int, 热榜 text, 序号 int, '
HEADS += '标题 text, 作者 text, 浏览 int, '
HEADS += '评论 int, 收藏 int, 热度 int)'
conn.execute(HEADS)

测试

在正式接入框架之前,做一下功能测试还是十分有必要的。此前已经保存了csv格式的热榜数据,所以首先把这些数据读出来

import csv
with open('heat.csv', 'r', encoding='utf8') as f:
    rs = [r for r in csv.reader(f)]

那么接下来就把这些热榜数据导入到数据库中,由于我们的数据非常整齐,和表头是完全一致的,所以插入函数相对简单

CODE = "insert into heat values (date('now'), time('now'), "
for r in rs[1:]:
    c = CODE + f"'{r[0]}', {r[1]},'{r[2]}','{r[3]}',{r[4]},{r[5]},{r[6]},{r[7]})"
    try: 
        conn.execute(c)
    except: 
        continue

然后可以查看一下,比如想看看所有榜单中排名第一的博客

res = conn.execute('select 标题 from heat where 序号==1')
for r in res:
    print(r)

内容如下


c++病毒/恶搞代码大全( 下 )
如何构建一个 NodeJS 影院微服务并使用 Docker 部署
【Python机器学习】实验12 基于神经网络的回归-分类实验
走近ChatGPT与类似产品:原理解析与比较
【状态模式】拯救if-else堆出来的屎山代码
码银送书第五期《互联网广告系统:架构、算法与智能化》
智能合约 – 常规漏洞分析 + 实例
搭建WebDAV服务手机ES文件浏览器远程访问
Android使用Gradle kotlin dsl 优雅配置构建项目
定量分析计算51单片机复位电路工作原理 怎么计算单片机复位电容和电阻大小
SSH公网远程直连Docker容器
内网穿透——使用Windows自带的网站程序建立网站
Spring Boot单元测试使用MockBean注解向Service注入Mock对象
【Unity每日一记】向量操作摄像机的移动(向量加减)
网络安全(黑客)自学
【Linux】超详细的Linux实用操作《文末送书》


最后,测试完毕,需要安全退出数据库,只需调用commit和close,前者用于保存,后者用于退出。

conn.commit()
conn.close()

然后可以进入sqlite3查看一下

>sqlite3 heat.db
SQLite version 3.39.3 2022-09-05 11:02:23
Enter ".help" for usage hints.
sqlite> .tables
heat
sqlite> select 标题 from heat where 序号==1;
c++病毒/恶搞代码大全()
如何构建一个 NodeJS 影院微服务并使用 Docker 部署
【Python机器学习】实验12 基于神经网络的回归-分类实验
走近ChatGPT与类似产品:原理解析与比较
【状态模式】拯救if-else堆出来的屎山代码
码银送书第五期《互联网广告系统:架构、算法与智能化》
-- 略

http://www.niftyadmin.cn/n/5137559.html

相关文章

轻量级狂雨小说cms系统源码 v1.5.2 基于ThinkPHP5.1+MySQL

轻量级狂雨小说cms系统源码 v1.5.2 基于ThinkPHP5.1MySQL的技术开发 狂雨小说cms提供一个轻量级小说网站解决方案,基于ThinkPHP5.1MySQL的技术开发。 KYXSCMS,灵活,方便,人性化设计简单易用是最大的特色,是快速架设小说类网站首选…

Word插入Latex语句并编译为数学公式

WPS不可行,正版word可以(垃圾WPS) 选中Latex语句并按下Alt (此处以后补一张图) 该方法不需要额外安装什么插件哦!

Linux常用命令——chkconfig命令

在线Linux命令查询工具 chkconfig 检查或设置系统的各种服务 补充说明 chkconfig命令检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconf…

【设计模式】第7节:创建型模式之“建造者模式”

Builder模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 在创建对象时,一般可以通过构造函数、set()方法等设置初始化参数,但当参数比较多,或者参数之间有依赖关系,需要进行复杂校验时&a…

asp防止cc攻击

<% Dim Limit As Integer Limit 10 设置访问限制次数 Dim Time As Integer Time 60 设置时间限制&#xff08;秒&#xff09;If Session("ATime") "" Then首次访问&#xff0c;记录时间与访问次数Session("ATime") NowSession("ACo…

[autojs]device使用方法

Auto.js Pro-8.2.0 文档 索引 | 查看全部 目录 Device device.widthdevice.heightdevice.buildIddevice.broaddevice.branddevice.devicedevice.modeldevice.productdevice.bootloaderdevice.hardwaredevice.fingerprintdevice.serialdevice.sdkIntdevice.incrementaldevice.…

【Python爬虫+可视化】解析小破站热门视频,看看播放量为啥会这么高!评论、弹幕主要围绕什么展开

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 环境使用 Python 3.8 Pycharm 模块使用 import requests import csv import datetime import hashlib import time 一. 数据来源分析 明确需求 明确采集网站以及数…

第65讲:MySQL存储过程之循环语法的核心概念与应用案例

文章目录 1.存储过程中循环的种类2.WHILE循环控制2.1.WHILE循环语法格式2.2.WHILE循环经典案例 3.REPEAT循环控制3.1.REPEAT循环语法结构3.2.REPEAT循环经典案例 4.LOOP循环控制4.1.LOOP循环语法结构4.2.LOOP循环经典案例一4.3.LOOP循环经典案例二 1.存储过程中循环的种类 在存…