使用python揭秘CSDN热门付费专栏惊人真相

文章目录

  • 1.csdn付费专栏词云
  • 2.浏览器抓包分析
  • 3.API接口测试
  • 4.需要使用的python库
  • 5.爬虫与数据分析设计
  • 6. 完整代码
  • 7.最终的成果
  • 8.惊人真相在这里

1.csdn付费专栏词云

我们如何分析csdn热门付费专栏呢?

在这里插入图片描述

热门专栏是动态的,所以我们爬取的数据是一直变化的!

通过我的分析得出如下结论,热门付费的领域:

  • 目标检测与计算机视觉:利用深度学习和图像处理技术,实现自动识别和定位目标物体的领域。
  • 系统开发与嵌入式:涉及设计、开发和优化嵌入式系统,包括硬件和软件的集成。
  • 数据科学与机器学习:通过分析和解释大量数据,利用机器学习算法构建模型,从中获取洞察和预测。
  • 物联网与人工智能:将传感器、设备和网络连接起来,通过人工智能技术实现智能化的互联网应用。
  • MATLAB应用:使用MATLAB编程语言和工具进行科学计算、数据分析、图像处理和模型开发等应用。

2.浏览器抓包分析

  • 1.我们首先找到CSDN排行榜页面

https://blog.csdn.net/rank/list/total
浏览器打开F12,点击网络

在这里插入图片描述

  • 我们停靠放上改为上下结构,如我上图

在这里插入图片描述

  • 点击如下图

首先我们点击热门专栏,然后我们点击Fetch/XHR,查看所有的网络请求
通过分析我们可以知道
在这里插入图片描述

  • 分析结果如下

https://blog.csdn.net/phoenix/web/blog/pay-column-rank?page=0&pageSize=20

在这里插入图片描述
在这里插入图片描述

3.API接口测试

我测试了

  • https://blog.csdn.net/phoenix/web/blog/pay-column-rank?page=0&pageSize=20
  • https://blog.csdn.net/phoenix/web/blog/pay-column-rank?page=0&pageSize=100
  • https://blog.csdn.net/phoenix/web/blog/pay-column-rank?page=0&pageSize=200
    通过测试发现,最多只能给到100个热门付费专栏数据

在这里插入图片描述

4.需要使用的python库

  • requests: 用于发送HTTP请求和处理响应的库。它可以用于与Web服务进行交互,例如获取网页内容或发送API请求。

  • pandas: 提供了用于数据操作和分析的数据结构和函数。它是一个功能强大的库,用于处理和分析结构化数据,例如表格数据。

  • wordcloud: 用于生成词云图的库。词云图是一种可视化形式,通过展示文本中出现频率较高的单词,以图形化的方式呈现文本数据。

  • matplotlib:
    用于创建静态、动态和交互式的可视化图表的库。它提供了各种绘图选项,可以用于创建线图、散点图、条形图、饼图等各种类型的图表。

pip install requests
pip install pandas
pip install wordcloud
pip install matplotlib

5.爬虫与数据分析设计

  • 首先我们需要做个爬虫,爬取API获取出的网络排行榜
import requests
import json


API_RANK = "https://blog.csdn.net/phoenix/web/blog/pay-column-rank"

# Http代理头
HTTP_headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36'
}

params = {'page': '0',
            'pageSize': 100}
response = requests.get(API_RANK, params=params, headers=HTTP_headers)
print("http:", response.url)
print("Status Code:", response.status_code)
print("Response Text:", response.text)


  • 我尝试把我们抓取到的数据写到excel中,我们来进行分析
import requests
import json
import pandas as pd

API_RANK = "https://blog.csdn.net/phoenix/web/blog/pay-column-rank"

# Http代理头
HTTP_headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36'
}

params = {'page': '0',
            'pageSize': 100}
response = requests.get(API_RANK, params=params, headers=HTTP_headers)
data = response.json()
print("http:", response.url)
print("Status Code:", response.status_code)
print("Response Text:", response.text)

def save_data_to_excel(data):
    df = pd.DataFrame(data)
    df.to_excel('data.xlsx', index=False)
    print("数据已成功保存到 data.xlsx 文件")
save_data_to_excel(data['data']["payColumnRankListItemList"])

在这里插入图片描述

  • 我们要分析高频词汇

    • 1.不可以分析高频词汇的时候拆分(C++,C#,OD等字样)
    • 2.根据高频词汇的出现数量来排名
def extract_top_keywords(,titles, fixed_words=None, min_count=2):
        fixed_words = {"OD", "C#", "JAVA", "C++", "华为", "Python"}
        # 创建自定义词汇表
        custom_vocab = set(fixed_words) if fixed_words else set()

        # 分词和清洗标题
        words = []
        for title in titles:
            # 使用正则表达式提取单词和数字
            tokens = re.findall(r'\w+', title)
            # 将单词转换为小写
            tokens = [token.lower() for token in tokens]

            # 将固定词汇作为整体添加到词汇表中
            for word in fixed_words:
                if word.lower() in title.lower():
                    tokens.append(word.lower())

            words.extend(tokens)

        # 统计词频
        word_counts = Counter(words)

        # 根据词频排序
        sorted_words = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)

        # 获取高频关键字和词汇
        top_keywords = [word for word, count in sorted_words if count >= min_count]

        return top_keywords

    def writePng(pic, title_list):
        # 将标题列表转换为字符串
        text = ' '.join(title_list)

        # 设置中文字体路径
        font_path = 'C:\\Windows\\Fonts\\simsun.ttc'  # 替换为你的中文字体路径

        # 创建词云对象并设置参数
        wc = WordCloud(font_path=font_path, background_color='white', width=800, height=600)

        # 生成词云
        wc.generate(text)

        # 显示词云
        plt.imshow(wc, interpolation='bilinear')
        plt.axis('off')
        plt.show()

        # 保存词云文件
        wc.to_file(pic)

6. 完整代码

import requests
import json
import pandas as pd
import re
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt

API_RANK = "https://blog.csdn.net/phoenix/web/blog/pay-column-rank"

# Http代理头
HTTP_headers = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36'
}

# http get 封装
class HttpRequest:
    header = None

    def __init__(self):
        return

    def request(self, URL, PARAMS):
        response = requests.get(URL, params=PARAMS, headers=HTTP_headers)
        print("http:", response.url)
        print("Status Code:", response.status_code)
        print("Response Text:", response.text)
        try:
            data = response.json()
            return data
        except json.JSONDecodeError:
            print("Error: The response is not in JSON format.")
            return None


class CSDNDataFetcher:
    def __init__(self):
        return

    def setHttpRequest(self, request):
        self.csdnGeter = request
        return

    # 获取排行榜
    def getRank(self, size):
        params = {
            'page': '0',
            'pageSize': size}
        data = self.csdnGeter.request(API_RANK, params)
        return data

    # 保存到excel中
    def save_data_to_excel(self, data):
        df = pd.DataFrame(data)
        df.to_excel('data.xlsx', index=False)
        print("数据已成功保存到 data.xlsx 文件")

    def read_column_from_excel(self, file_path, sheet_name, column_name):
        df = pd.read_excel(file_path, sheet_name=sheet_name)
        column_data = df[column_name].tolist()
        return column_data

    def extract_top_keywords(self, titles, fixed_words=None, min_count=2):
        fixed_words = {"OD", "C#", "JAVA", "C++", "华为", "Python","Matlab","Qt"}
        # 创建自定义词汇表
        custom_vocab = set(fixed_words) if fixed_words else set()

        # 分词和清洗标题
        words = []
        for title in titles:
            # 使用正则表达式提取单词和数字
            tokens = re.findall(r'\w+', title)
            # 将单词转换为小写
            tokens = [token.lower() for token in tokens]

            # 将固定词汇作为整体添加到词汇表中
            for word in fixed_words:
                if word.lower() in title.lower():
                    tokens.append(word.lower())

            words.extend(tokens)

        # 统计词频
        word_counts = Counter(words)

        # 根据词频排序
        sorted_words = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)

        # 获取高频关键字和词汇
        top_keywords = [word for word, count in sorted_words if count >= min_count]

        return top_keywords

    def writePng(self, pic, title_list):
        # 将标题列表转换为字符串
        text = ' '.join(title_list)

        # 设置中文字体路径
        font_path = 'C:\\Windows\\Fonts\\simsun.ttc'  # 替换为你的中文字体路径

        # 创建词云对象并设置参数
        wc = WordCloud(font_path=font_path, background_color='white', width=800, height=600)

        # 生成词云
        wc.generate(text)

        # 显示词云
        plt.imshow(wc, interpolation='bilinear')
        plt.axis('off')
        plt.show()

        # 保存词云文件
        wc.to_file(pic)


#创建
r = HttpRequest()
obj = CSDNDataFetcher()
obj.setHttpRequest(r)

data = obj.getRank(100)
obj.save_data_to_excel(data['data']["payColumnRankListItemList"])

text = obj.read_column_from_excel("data.xlsx", "Sheet1", "columnName")
tiles = obj.extract_top_keywords(text)
obj.writePng("test.jpg", tiles)

7.最终的成果

你们真的好卷!!!
为了资本卷!!!
为了技术卷!!!
年底分多少钱!!!
今年加多少班!!!
绩效怎么样!!!
沉淀沉淀吧,有些事我都不知道怎么说。

在这里插入图片描述)

  • 目标检测与计算机视觉:YOLOv8、YOLOv5、YOLOv8-seg是目标检测算法的不同版本,芒果改进YOLO进阶指南和YOLOv8改进实战专栏提供了关于目标检测算法的改进和实践经验。此外,深度学习、点云处理、计算机视觉等也是与目标检测相关的热门领域。

  • 系统开发与嵌入式:华为OD机试专栏、Android开发、Autosar、FPGA、单片机、ARM开发等专栏涉及了系统开发、嵌入式开发、底层编程等方面的内容,适合对系统开发和嵌入式技术感兴趣的人。

  • 数据科学与机器学习:包括Python、R语言、XGBoost、BP神经网络、时间序列分析(ARIMA和GARCH)等专栏,涵盖了数据科学、机器学习、深度学习等领域的内容,适合对数据分析和机器学习算法感兴趣的人。

  • 物联网与人工智能:智能家居与物联网项目实战、物联网AIOT、ESP8266/ESP32等专栏关注物联网应用和物联网设备的开发,同时涉及到与人工智能相关的技术。

  • MATLAB应用:MATLAB专栏提供了各类MATLAB代码和工具的使用,适合对MATLAB编程和应用感兴趣的人。

8.惊人真相在这里

😳😳😳😳😳😳
你们好卷,再见!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5-4、S加减单片机程序【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:本节介绍实现步进电机S曲线运动的代码 一、目标功能 实现步进电机转动总角度720,其中加减速各90 加速段:加速类型:S曲线  加速角度:角度为90  起步速度…

【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (下篇)

在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (下篇) 项目介绍 YOLOv5 是革命性的 "单阶段"对象检测模型的第五次迭代,旨在实时提供高速、高精度的结果,是世界上最受欢迎的视觉人工智能模型,代表了Ult…

使用ChatGpt和文心一言辅助文章创作

近期在写数字水浒系列文章,使用了ChatGpt和文心一言进行辅助创作,整体感受不错,提高了工作效率。 在使用过程中,感觉文心的中文能力更强一些,主要体现在: 1 语料库更大,比如对水浒传了解的更多…

Blender_查看版本

Blender_查看版本 烦人的烦恼,没找见哪儿可以查看版本? 算是个隐蔽的角落!

MoE-LLaVA:具有高效缩放和多模态专业知识的大型视觉语言模型

视觉和语言模型的交叉导致了人工智能的变革性进步,使应用程序能够以类似于人类感知的方式理解和解释世界。大型视觉语言模型(LVLMs)在图像识别、视觉问题回答和多模态交互方面提供了无与伦比的能力。 MoE-LLaVA利用了“专家混合”策略融合视觉和语言数据&#xff0…

如何利用大模型结合文本语义实现文本相似度分析?

常规的文本相似度计算有TF-IDF,Simhash、编辑距离等方式,但是常规的文本相似度计算方式仅仅能对文本表面相似度进行分析计算,并不能结合语义分析,而如果使用机器学习、深度学习的方式费时费力,效果也不一定能达到我们满…

Linux联网安装MySQL Server

yum安装 以下代码复制粘贴到控制台即可 yum list | grep mysql-server #查看可以下载的MySQLyum install -y mysql-server #安装MySQLmysql_secure_installation #引导安装 引导安装实例如下 systemctl enable mysqld 设置开机自动启动 systemctl sta…

transformer剪枝论文汇总

文章目录 NN Pruning摘要实验 大模型剪枝LLM-PrunerSparseGPT LTPVTPWidth & Depth PruningPatch SlimmingDynamicViTSPViTDynamicBERTViT SlimmingFastFormersNViTUVCPost-training pruning NN Pruning 《Block Pruning For Faster Transformers》 《为更快的transformer…

泰雷兹和Quantinuum推出入门套件,帮助企业为未来的后量子加密变革做好准备

•新的解决方案——PQC入门套件(PQC Starter Kit)为用户提供了一种快速、简便的方法,用于测试和衡量其在后量子时代防范量子计算攻击的准备情况 •随着量子计算逐渐成熟,企业为后量子时代做好准备并培养加密灵活性,对于降低数据泄露风险至关重…

牛客——最短Hamilton路径(动态规划)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 给定一张 n(n≤20)(n \leq 20)(n≤20) 个点的带权无向图,点从0∼n−10 \sim n-10∼n−1标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是…

Camunda历史记录和审核事件日志

💖专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧😘 💖历史记录 …

分享springboot框架的一个开源的本地开发部署教程(若依开源项目开发部署过程分享持续更新二开宝藏项目MySQL数据库版)

1首先介绍下若依项目: 若依是一个基于Spring Boot和Spring Cloud技术栈开发的多租户权限管理系统。该开源项目提供了一套完整的权限管理解决方案,包括用户管理、角色管理、菜单管理、部门管理、岗位管理等功能。 若依项目采用前后端分离的架构&#xf…

基础面试题整理7之Redis

1.redis持久化RDB、AOF RDB(Redis database) 在当前redis目录下生成一个dump.rdb文件,对redis数据进行备份 常用save、bgsave命令进行数据备份: save命令会阻塞其他redis命令,不会消耗额外的内存,与IO线程同步;bgsav…

Linux系统中HTTP代理的常见问题及解决方案

亲爱的Linux用户们,是不是有时候觉得HTTP代理就像是一个魔法盒子,让你在数字世界中自由穿梭?但是,就像所有的魔法物品一样,它也会偶尔出点小状况。今天,我们就来一起探讨一下Linux系统中HTTP代理的常见问题…

C语言之字符逆序(牛客网)

个人主页(找往期文章包括但不限于本期文章中不懂的知识点):我要学编程(ಥ_ಥ)-CSDN博客 字符逆序__牛客网 题目: 思路:既然有空格就不能用scanf函数来接收字符了。因为scanf函数遇到空格会停止读取。我们可以用get…

【Git教程】(一)基本概念 ——工作流、分布式版本控制、版本库 ~

Git教程 基本概念 1️⃣ 为什么要用 Git2️⃣ 为什么要用工作流3️⃣ 分布式版本控制4️⃣ 版本库5️⃣ 简单的分支创建与合并🌾 总结 在本章中,将介绍一个分布式版本控制系统的设计思路,以及它与集中式版本控制系统的不同之处。除此之外&am…

Camunda排他网关与并行网关

💖专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据,完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧😘 💖排他网关 …

【JAVA WEB】Web标签

目录 注释标签 标题标签 h1-h6 段落标签 换行标签 格式化标签 加粗:strong 标签和 b 标签 倾斜:em 标签和 i 标签 删除线: del 标签 和 s 标签 下划线:ins 标签 和 u 标签 图片标签:img 单标签 src属性&#…

在angular12中proxy.conf.json中配置详解

一、proxy.conf.json文件的目录 二、proxy.conf.json文件中的配置 "/xxx/api": {"target": "地址/api","secure": false,"logLevel": "debug","changeOrigin": true,"pathRewrite": {"…

蓝桥杯嵌入式学习记录——点亮第一个LED(含软件的使用)

目录 一、蓝桥杯概述 二、软件的使用 三、点亮LED 一、蓝桥杯概述 蓝桥杯是一个编程大赛、商赛,获奖率高达60%(省赛中一等奖10%、二等奖20%、三等奖30%),但这并不影响它的含金量,多所高校将它列为A类赛事并实行保研…