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

文章目录

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

数据爬取

热榜地址是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 jiebatext = ','.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.rhkb.cn/news/89171.html

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

相关文章

Python批量给excel文件加密

有时候我们需要定期给公司外部发邮件&#xff0c;在自动化发邮件的时候需要对文件进行加密传输。本文和你一起来探索用python给单个文件和批量文件加密。    python自动化发邮件可参考【干货】用Python每天定时发送监控邮件。 文章目录 一、安装pypiwin32包二、定义给excel加…

SQL | 汇总数据

9-汇总数据 9.1-聚集函数 在实际开发过程中&#xff0c;可能会遇到下面这些情况&#xff1a; 确定大于某个值的有多少行数据&#xff0c;比如游戏排行榜&#xff0c;查询玩家排行多少名。 获取表中某些行的和&#xff0c;比如双十一当天&#xff0c;某个用户总订单价格是多少…

开源,微信小程序 美食便签地图(FoodNoteMap)的设计与开发

目录 0 前言 1 美食便签地图简介 2 美食便签地图小程序端开发 2.1技术选型 2.2前端UI设计 2.3主页界面 2.4个人信息界面 2.5 添加美食界面 2.6美食便签界面 2.8 美食好友界面 2.9 美食圈子界面 2.10 子页面-店铺详情界面 2.11 后台数据缓存 2.12 订阅消息通知 2.1…

SpringBoot第36讲:SpringBoot集成连接池 - 集成数据库Druid连接池

SpringBoot第36讲&#xff1a;SpringBoot集成连接池 - 集成数据库Druid连接池 上文介绍默认数据库连接池HikariCP&#xff0c;本文是SpringBoot第36讲&#xff0c;主要介绍SpringBoot集成阿里开源的Druid连接池的实践; 客观的来说&#xff0c;阿里Druid只能说是中文开源中 功能…

excel填数据转json格式

定制化比较严重&#xff0c;按需更改 excel文件如下 代码 # -*- coding: utf-8 -*- import oss2 import shutil import sys import xlwt import xlrd import json from datetime import datetime, timedeltafile1 "C:\\Users\\cxy\\Desktop\\generate.xls" #打开表…

OCP China Day 2023:五大社区齐聚,加速开源开放创新与落地

8月10日&#xff0c;2023年开放计算中国社区技术峰会&#xff08;OCP China Day 2023&#xff09;在北京举行。智慧时代&#xff0c;计算多元化、应用多样化、技术复杂化正驱动数据中心新一轮变革&#xff0c;开源开放社区已成为推动数据中心持续创新的重要力量&#xff0c;通过…

多线程与高并发--------线程池

线程池 一、什么是线程池 在开发中&#xff0c;为了提升效率的操作&#xff0c;我们需要将一些业务采用多线程的方式去执行。 比如有一个比较大的任务&#xff0c;可以将任务分成几块&#xff0c;分别交给几个线程去执行&#xff0c;最终做一个汇总就可以了。 比如做业务操…

Maven进阶2 -- 私服(Nexus)、私服仓库分类、资源上传和下载

目录 私服是一台独立的服务器&#xff0c;用于解决团队内部的资源共享与资源同步问题。 1.Nexus Nexus是sonatype公司的一款maven私服产品。 下载地址 启动 nexus.exe /run nexus 访问 & 登录 2.私服仓库分类 3.资源上传和下载 本地仓库上传和访问资源需要进行配置。…

SpingBoot-Vue前后端——实现CRUD

目录​​​​​​​ 一、实例需求 ⚽ 二、代码实现 &#x1f3cc; 数据库 &#x1f440; 后端实现 &#x1f4eb; 前端实现 &#x1f331; 三、源码下载 &#x1f44b; 一、实例需求 ⚽ 实现一个简单的CRUD&#xff0c;包含前后端交互。 二、代码实现 &#x1f3cc; 数…

Java SPI机制

Java SPI机制 java的spi就是一种服务提供发现机制&#xff0c;在一方制定好接口规范后&#xff0c;通过spi的机制可以它的子实现类进行服务发现&#xff0c;以及加载它的子实现类&#xff0c;通过这种机制&#xff0c;让我们在引入第三方库时&#xff0c;不用讲第三方库中的类…

管易云和金蝶云星空接口打通对接实战

管易云和金蝶云星空接口打通对接实战 对接系统管易云 管易云是上海管易云计算软件有限公司旗下的专注提供电商企业管理软件服务的品牌&#xff0c;总部位于中国上海张江高科技产业园区。管易云旗下拥有管易云C-ERP、EC-OMS、EC-WMS、B2C/B2B/BBC/微商城开发、PDA无纸化仓储解决…

TypeScript项目中Axios的封装

目录 前言 一、axios中的常见类型 1. AxiosInstance 2. AxiosRequestConfig 3. AxiosResponse 4. AxiosError 二、axios封装步骤 三、封装后的完整代码 1. 基础封装 2. 高级封装 前言 为了实现统一的网络请求处理和管理&#xff0c;在日常开发中我们常常封装 axios&…

一个步骤跳过 Unity 启动Logo | 多平台适用 | 官方API支持

前言【Unity实战篇 】 | 一个步骤跳过 Unity Logo 界面 | 多平台适用 | 官方API支持使用方法核心 API1. RuntimeInitializeOnLoadMethodAttribute2. SplashScreen效果展示总结前言 众所周知,使用Unity引擎打包的工程在启动时都带有Unity的默认启动Logo。这个问题可以通过购买U…

Codeforces Round 893 (Div. 2)ABC

Codeforces Round 892 (Div. 2) 目录 A. United We Stand题目大意思路代码 B. Olya and Game with Arrays题目大意思路代码 C. Another Permutation Problem题目大意思路代码 A. United We Stand 题目大意 给你一个数组&#xff0c;把这个数组分成两个数组a和b&#xff0c;使…

大数据-玩转数据-Flink RedisSink

一、添加Redis Connector依赖 具体版本根据实际情况确定 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-redis_2.11</artifactId><version>1.1.5</version> </dependency>二、启动redis 参…

使用KETTLE工具在Oracle和Dm8之间迁移数据

oracle 代码测试数据 CREATE TABLE PRODUCT_CATEGORY ( PRODUCT_CATEGORYID NUMBER(11,0) NOT NULL , NAME VARCHAR2(255) NOT NULL ENABLE, PRIMARY KEY (PRODUCT_CATEGORYID) )INSERT ALL into PRODUCT_CATEGORY(PRODUCT_CATEGORYID, NAME)VALUES(2,国学) into PRODUCT_CATEG…

Qt开发技术:Q3D图表开发笔记:Q3DSurface三维曲面图介绍、Demo以及代码详解

前言 qt提供了q3d进行三维开发&#xff0c;虽然这个框架没有得到大量运用也不是那么成功&#xff0c;性能上也有很大的欠缺&#xff0c;但是普通的点到为止的应用展示还是可以的。   其中就包括华丽绚烂的三维图表&#xff0c;数据量不大的时候是可以使用的。   前面介绍了…

win10电脑右下角不显示电脑图标,但是能正常上网,怎么解决?

一、问题描述 win10系统更新后&#xff0c;电脑右下角不显示小电脑图标&#xff0c;但是能正常上网&#xff0c;而且用命令测试时显示的是192打头的网址。 二、解决方法 运行命令提示符窗口&#xff0c;在命令提示符中输入&#xff1a;netsh winsock reset&#xff08; 如果提示…

学习pytorch 3 tensorboard的使用

tensorboard的使用 1. 安装2. add_scalar 查看函数图形3. 查看结果4. add_image() 查看训练步骤中间结果的图片 1. 安装 pytorch conda环境 pip install tensorboard pip install opencv-python2. add_scalar 查看函数图形 常用来查看 train val loss等函数图形 from torch…

第57步 深度学习图像识别:CNN可视化(Pytorch)

基于WIN10的64位系统演示 一、写在前面 由于不少模型使用的是Pytorch&#xff0c;因此这一期补上基于Pytorch实现CNN可视化的教程和代码&#xff0c;以SqueezeNet模型为例。 二、CNN可视化实战 继续使用胸片的数据集&#xff1a;肺结核病人和健康人的胸片的识别。其中&…