CSDN热榜分析:来看看热榜都在写什么

news2025/4/4 6:06:12

文章目录

    • 数据爬取
    • 词云制作
    • 滤除停用词

数据爬取

热榜地址是https://blog.csdn.net/rank/list,先进去再说

from selenium import webdriver
from selenium.webdriver.common.by import By
url = 'https://blog.csdn.net/rank/list'
driver = webdriver.Edge()
driver.get(url)

进来之后发现使用了下拉刷新,需要滚到最下面才能查看下一页,所以并没有得到全部热榜博文。这时先滚动一下试试

driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

发现页面的确下拉了。

热榜中共有100篇博客,div的类名是floor-rank-item,所以只要找到100个floor-rank-item,就说明下拉到最下面了。

import time
titleClass = "floor-rank-item"
ts = []
while len(ts) < 100:
    driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
    ts = driver.find_elements(By.CLASS_NAME, titleClass)
    time.sleep(0.5)

当Title数达到100的时候,就可以进行下一步处理了。

根据类名找到的元素中,刚好给出了序号、博客标题、浏览量、评论量、收藏量、热度以及作者。所以我们可以非常方便地做出一个热榜列表

def decodeOne(text):
    ws = text.split('\n')
    return [ws[i] for i in [0, 1, 10, 2, 4, 6, 8]]

blogs = [decodeOne(t.text) for t in ts]

然后就可以输出为csv,然后在excel中查看了

import csv
with open('blogs.csv','w',newline='') as f:
    w = csv.writer(f)
    w.writerow(["序号", "标题", "作者", "浏览", "评论", "收藏", "热度"])
    for b in blogs:
        try: w.writerow(b)
        except: continue

词云制作

虽然输出了csv格式的数据,但着实看不出来啥,所以接下来用更有表现力的词云来展示一下热榜都是啥。

词云制作有两个关键步骤,一个是分词,可以用著名的jieba库;另一个是画图,可用worldcloud,如果没装可以pip一下。

首先通过jieba处理爬取到的文本

import jieba

text = ','.join([b[1] for b in blogs])
words = jieba.lcut(text)

words2 = [w for w in words if len(w)>1]
counts = {w:0 for w in set(words2)} 
for w in words2: counts[w] += 1

其中words2是从words中取出的长度大于1的词,通过set 用集合来排除重复单词后,将其封入counts字典中,最后统计每个词出现的次数。

万事俱备,接下来就可以生成词云了,wordcloud可以直接根据现有的单词列表来生成词云,例如

from wordcloud import WordCloud
font = r"C:\Windows\Fonts\simhei.ttf"
cloud = WordCloud(width=800, height=450, font_path=font)
cloud.generate(" ".join(words2))

WordCloud用于制作词云图,font_path是字体的位置,默认字体不支持中文。在词云模板画完之后,通过generate导入用于绘图的数据,单词之间用空格分开。

至此就已经做好了词云,接下来需要将其画出。因为词云图本质就是一张图片,所以用imshow就可以。为了好看一点,取消坐标轴,同时使用tight_layout,缩小一下边框。

import matplotlib.pyplot as plt
def showCloud(cloud):
    plt.imshow(cloud)
    plt.axis("off")
    plt.tight_layout()
    plt.show()

showCloud(cloud)

如图所示

在这里插入图片描述

滤除停用词

在分词领域,那些没有实际意义的连接词,被称为停用词。如果我们想知道哪些领域更容易上热榜,那么诸如使用、实现之类的词就可以算作停用词。

这里仅凭目测,大概没什么意义的词有:‘项目’, ‘使用’, ‘实现’, ‘模型’, ‘数据’, ‘系统’, ‘平台’, ‘原理’, ‘自学’, ‘博客’, ‘推荐’, ‘实践’, ‘实战’, ‘技术’, ‘基于’, ‘如何’, '什么’之类的。当然学习这个词应该是有意义的,可能出现在机器学习或者深度学习中。

from jieba.analyse import set_stop_words
stopLst = ['项目', '使用', '实现', '模型', '数据', '系统', '平台', '原理', '自学', '博客', '推荐', '实践', '实战', '技术', '基于', '如何', '什么']
words3 = [w for w in words2 if w not in stopLst]
cloud = WordCloud(width=800, height=450, font_path=font)
cloud.generate(" ".join(words3))
showCloud(cloud)

最后效果如下

在这里插入图片描述

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

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

相关文章

Java8函数式编程

ISBN: 978-7-115-38488-1 作者&#xff1a;【英】Richard Warburton 页数&#xff1a;132页 阅读时间&#xff1a;2023-08-05 推荐指数&#xff1a;★★★★★ 练习项目&#xff1a;https://github.com/RichardWarburton/java-8-lambdas-exercises 虽然这本书出版于2014年&…

LCP 44.开幕式焰火

目录 一、题目 二、代码 一、题目 二、代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:static i…

UG NX二次开发(C++)-PK函数创建一条圆弧曲线

文章目录 1、前言2、创建一个项目3、添加头文件4、在do_it中添加创建圆曲线的源代码5、调用dll6、再创建一个长方体验证1、前言 采用PK进行UG NX二次开发,现在看到的文章很多是直接创建实体,然后在UG NX的视图区显示出来,对于创建圆曲线的文章不多,本文讲一下PK函数创建圆…

安卓逆向 - Frida Hook(抓包实践)

一、引言 上篇文章&#xff1a;安卓逆向 - 基础入门教程_小馒头yy的博客-CSDN博客 介绍了Frida的安装、基本使用&#xff0c;今天我们来看看Frida常用Hook和基于Frida抓包实践。 二、Frida常用 Hook脚本 1、hook java.net.URL function hook1() {var URL Java.use(java.n…

POI处理excel,根据XLOOKUP发现部分公式格式不支持问题

poi4不支持XLOOKUP函数&#xff0c;但poi最新的5.2.3却已经对此函数做了支持 poi下载地址&#xff1a;Index of /dist/poi/release/bin 公式源码位置&#xff1a;org/apache/poi/ss/formula/atp/XLookupFunction.java 但是在使用此函数过程中&#xff0c;发现有些XLOOKUP函数会…

基于Java+SpringBoot+Vue前后端分离仓库管理系统详细设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

JSON字符串转换

大家好 , 我是苏麟 , 今天带来一个JSON序列化库 Gson . GitHub 地址 : GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back java 中 json 序列化库有很多&#xff1a; gson (谷歌的) fastjson (阿里的) jack…

numba 入门示例

一维向量求和&#xff1a; C A B 在有nv 近几年gpu的ubuntu 机器上&#xff0c; 环境预备&#xff1a; conda create -name numba_cuda_python3.10 python3.10 conda activate numba_cuda_python3.10conda install numba conda install cudatoolkit conda install -c nvi…

Java多线程编程中的线程控制:挂起、停止和恢复

Java 线程控制&#xff1a;挂起、停止和恢复 在多线程编程中&#xff0c;对线程进行控制是非常重要的&#xff0c;可以通过挂起、停止和恢复线程来实现对线程的管理。本文将介绍如何使用Java提供的方法对线程进行挂起、停止和恢复操作&#xff0c;以及需要注意的安全性和替代方…

最强自动化测试框架Playwright (27)-跟踪查看器

Playwright Trace Viewer 是一个 GUI 工具&#xff0c;可帮助您在脚本运行后探索记录的 Playwright 跟踪。可以本地打开&#xff0c;也可以在trace.playwright.dev.打开&#xff0c; 录制跟踪文件 使用context.tracing.start进行录制&#xff0c;使用stop方法保存录制文件 b…

【mysql算法】在数据库中储存树形结构

【mysql&算法】在数据库中储存树形结构 【一】常见的使用树的场景【二】方式一&#xff1a;邻接表&#xff08;1&#xff09;方法介绍&#xff08;2&#xff09;优点&#xff08;3&#xff09;缺点&#xff08;4&#xff09;实现案例&#xff1a;生成菜单树结构 【三】方式…

盒子阴影效果与环绕阴影

box-shadow 在前端样式里面&#xff0c;最常见的一中效果之一就是阴影&#xff0c;好的阴影可以瞬间给人一种高端的用户体验&#xff0c;今天简单总结下这个样式的语法与使用方法。 语法 box-shadow的语法其实是比较简单好记的&#xff0c;我们按照最全面的写法来看 x轴偏移…

社区团购商城拼团秒杀接龙分销团长小程序开源版开发

社区团购商城拼团秒杀接龙分销团长小程序开源版开发 功能介绍&#xff1a; 商品管理&#xff1a;增加商品-商品列表-商品分类-商品单/多规格-商品标签 订单管理&#xff1a;订单列表-订单挑选-订单导出-订单打印-批量发货-商品评价 会员管理&#xff1a;会员列表-会员挑选-会员…

1. 基于UDP的TFTP文件传输上传下载完整版本

1&#xff09;tftp协议概述 简单文件传输协议&#xff0c;适用于在网络上进行文件传输的一套标准协议&#xff0c;使用UDP传输 特点&#xff1a; 是应用层协议 基于UDP协议实现 数据传输模式 octet&#xff1a;二进制模式&#xff08;常用&#xff09; mail&#xff1a;…

jenkins 安装nodejs 14

参考&#xff1a; jenkins容器安装nodejs-前端问答-PHP中文网

微服务08-多级缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,分…

VB6查表法编解Modbus RTU协议CRC16校验码

Modbus RTU协议CRC16编解码用VB6写起来比较啰嗦&#xff0c;需要做一些简单处理。下面就查表法&#xff0c;贴上源代码&#xff0c;并做一些简要说明。 源程序&#xff0c;对照上面的图看更方便。 Private Sub Command2_Click() Dim I As Integer, J As Integer Dim CRCHi As …

部署lawyer-llama

Git - Downloading PackageGit - Downloading PackageGit - Downloading Package 下载git&#xff0c;wget需要下载一下 &#xff08;GNU Wget 1.21.4 for Windows&#xff09;&#xff0c; Windows中git bash完全可以替代原生的cmd&#xff0c;但是对于git bash会有一些Linu…

HTTP之cookie基础学习

目录 Cookie 什么是Cookie Cookie分类 Cookie版本 Cookie工作原理 Cookie详解 创建cookie cookie编码 cookie过期时间选项 Cookie流程 Cookie使用 会话管理 个性化信息 记录用户的行为 Cookie属性 domain选项 path选项 secure选项 cookie…

【日常积累】RPM包依赖下载及私有yum仓库搭建

概述 某些时候&#xff0c;我们需要下载某个RPM包依赖的依赖。如某些内网环境&#xff0c;就需要自行准备rpm包。可以通过能上互联网的服务器进行相应的rpm包下载&#xff0c;然后在拷贝到相应的服务器安装&#xff0c;或者搭建自己的内容rpm包仓库。 查看*.rpm 包依赖&#…