【Python爬虫】CSDN热榜文章热门词汇分析

这篇具有很好参考价值的文章主要介绍了【Python爬虫】CSDN热榜文章热门词汇分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📚 前言

在信息时代,我们经常需要从大量的文章中获取有用的信息。本文将介绍如何使用Python进行数据处理,获取热榜文章的标题和标签,并使用jieba库进行数据分析。通过本文的学习,你将掌握获取和分析热榜文章数据的技巧。

先上看看效果:

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言
【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

🛠️ 环境准备

在开始编写代码之前,我们需要进行一些环境准备。以下是所需的环境和库:

  • 操作系统:Windows
  • 编程语言:Python 3
  • 编辑器:VSCode(可选)

所使用的库

库名 作用
requests 发送HTTP请求获取网页内容
BeautifulSoup 处理和分析数据
jieba 中文分词工具
wordcloud 制作词云图
matplotlib 绘制图表
csv csv表格处理
json json格式

可以使用以下命令需要安装的库:

pip install BeautifulSoup
pip install jieba
pip install wordcloud
pip install matplotlib

请确保已经正确安装了Python 3,并且在编写代码之前设置了Python 3的环境变量。

📑 热榜信息获取

🎯热榜上的信息获取

首先,我们需要从全站综合热榜上获取热门文章的信息。

全站综合热榜https://blog.csdn.net/rank/list

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

需要的文章信息有

["标题", "标签","作者","评论数" ,"收藏量","浏览量", "热度值", "文章链接"]

经分析,全站综合热榜文章信息数据可以在hot-rank 的api中获取到除文章标签外的信息:

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

代码如下:

def get_hot_list(page):
    # 每页25条信息,总共4页,100条
    params = {
        "page": page,     # 页数
        "pageSize": "25",
        "type": ""
    }
    hot_rank_url = 'https://blog.csdn.net/phoenix/web/blog/hot-rank'
    data = requests.get(url=hot_rank_url,headers=user_headers,params=params)
    hot_rank_list = data.json()["data"]
    for article in hot_rank_list:
        Url = article["articleDetailUrl"]  # 获取文章链接
        tag_list = get_article_tag(Url,user_headers) # 文章标签,列表形式  
        tag = ",".join(tag_list) #列表转为字符串,使用“,”连接
        Title = article["articleTitle"]  # 获取文章标题
        commentCount = article["commentCount"]  # 评论
        favorCount = article["favorCount"]  # 收藏
        hotRankScore = article["hotRankScore"]  # 热度
        nickName = article["nickName"]      # 作者
        viewCount = article["viewCount"]    # 浏览量

上述代码中,我们使用requests库发送HTTP请求获取热榜xhr数据。然后,使用json方法处理数据,提取其中的表格数据。

🎯补充信息(文章标签)

文章标签需要访问文章详情页才能够拿到,所在位置如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mkPdg0JP-1689416684853)(C:\Users\LIN\AppData\Roaming\Typora\typora-user-images\image-20230715163532878.png)]

检查文章源代码,使用搜索可以找到,文章标签在body->script下

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

找到位置了,💪那就开始写代码…

def get_article_tag(articleDetailUrl,user_headers):
    """
    articleDetailUrl : 文章链接
    """
    data = requests.get(url=articleDetailUrl,headers=user_headers)
    # 使用html.parser解析响应文档
    soup = BeautifulSoup(data.text, 'html.parser')
    # 获取所有script对象内容
    script_tag = soup.find('script', text=re.compile('toolbarSearchExt')).text.strip()
    # 提取特定var变量的值  
    result = json.loads(script_tag[script_tag.find('{'):script_tag.find('}')+1])  
    return result["tag"]

🗐 信息保存

获取热榜文章信息后,我们可以将其保存到CSV文件中,并将标题和标签分别保存到文本文件中,为后面的jieba分析作准备。

def get_hot_list(page):
    ...
    # 将信息存入对应的列表
    hot_data_list.append([Title,tag,nickName,commentCount,favorCount,viewCount,hotRankScore,Url])
    hot_title_list.append(Title)
    hot_tag_list.extend(tag_list) 

if __name__ == "__main__":
    hot_data_list = [] 	# 热榜文章信息列表
    hot_title_list = []	# 热榜文章标题列表
    hot_tag_list = []	# 热榜文章标签列表
    for i in range(4):
        get_hot_list(i)
    with open(r"..\file\csdn热榜分析.csv", "w", newline="", encoding="utf-8-sig") as file:
        writer = csv.writer(file)
        writer.writerow(["标题", "标签","作者","评论数" ,"收藏量","浏览量", "热度值", "文章链接"])
        writer.writerows(hot_data_list)
    with open(r"..\file\csdn热榜标签.txt", "w", newline="", encoding="utf-8") as f_tag:
        f_tag.writelines(hot_tag_list)
    with open(r"..\file\csdn热榜标题.txt", "w", newline="", encoding="utf-8") as f_title:
        f_title.writelines(hot_title_list)

上述代码使用for循环获取全部文章信息,其中i表示页数。

使用sys库获取当前py文件所在的目录,以防代码在不同电脑上运行,路径不同存储读取出现问题

if __name__ == "__main__":
    ...
    # 当前py文件所在的目录
	bath_path = sys.path[0]
    with open(f"{bath_path}\\file\csdn热榜分析.csv", "w", newline="", encoding="utf-8-sig") as file:
        writer = csv.writer(file)
        writer.writerow(["标题", "标签","作者","评论数" ,"收藏量","浏览量", "热度值", "文章链接"])
        writer.writerows(hot_data_list)
    ...

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

🌐 分词

Jieba是一个流行的中文分词库,它能够将中文文本切分成词语,并对每个词语进行词性标注。中文分词是自然语言处理的重要步骤之一,它对于文本挖掘、信息检索、情感分析等任务具有重要意义。

接下来,我们将使用jieba库对标题和标签进行分词处理,以便后续的数据分析。

import jieba

# 读取标题和标签文本
with open('csdn热榜标签.txt', 'r') as file:
    titles = file.readlines()

with open('csdn热榜标签.txt', 'r') as file:
    tags = file.readlines()

# 分词处理
title_words = [jieba.lcut(title.strip()) for title in titles]
tag_words = [jieba.lcut(tag.strip()) for tag in tags]

# 查看分词结果
print(title_words[:5])
print(tag_words[:5])

在上述代码中,我们使用jieba库对标题和标签进行分词处理。首先,我们使用jieba.lcut()函数对每个标题和标签进行分词,并将结果存储在列表中。分词结果是一个列表的列表,每个子列表表示一个标题或标签的分词结果。

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

📊 柱形图

📊 分词统计

构造字典,逐一遍历分词结果中的中文单词进行处理,并用字典计数,然后转为列表进行排序(代码为标题部分示例)。

counts = {}  # 构造字典,计数
for title_word in title_words:
    for word in title_word:
        if len(word) == 1:
            continue
        else:
            counts[word] = counts.get(word, 0) + 1
items = list(counts.items())  # 转换,排序
items.sort(key=lambda x: x[1], reverse=True)

📊 绘制柱形图

使用pyplot库对标题和标签分词数据进行可视化,这里截取前20的热词。(代码为标题部分示例)

from matplotlib import pyplot as plt
newitems = items[0:20:1] # 截取前20
tu = dict(newitems)
# 定义 x和 y的空列表,用于分别存放tu字典的键和值
x = []
y = []
# 列车键和分别追加到x和y列表
for k in tu:
    x.append(k)
    y.append(tu[k])

plt.title("csdn热榜标签词汇统计", fontsize=25)# 打印标题
plt.xlabel("热门词汇")			   # x标签
plt.ylabel("词频")				# y标签
plt.xticks(rotation=45, fontsize=10)
# 输出图表中间的文字各种格式的定义
for a, b in zip(x, y):
    plt.text(a, b, "%.0f" % b, ha="center", va="bottom", fontsize=12, )

plt.bar(x, y, label="频率") # 图示
plt.legend()
plt.show()# 图表展示

运行结果:

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

🤔中文显示出现问题,解决办法如下:

# 支持中文
plt.rcParams["font.sans-serif"] = ["SimHei"]  # 用来正常显示中文标签

运行结果:

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

柱形图完成o( ̄▽ ̄)ブ

☁︎ 制作词云

词云是一种可视化工具,可以直观地显示文本数据中词语的重要程度。下面我们使用wordcloud库制作标题和标签的词云图。

# 分词处理
title_words = [jieba.lcut(title.strip()) for title in titles][0]
tag_words = [jieba.lcut(tag.strip()) for tag in tags][0]

title_words_str = ' '.join(title_words) # 连接成字符串
tag_words_str = ' '.join(tag_words) # 连接成字符串

stopwords = ["[", "]", "【", "】",'(',')', '(', ')', '|', '/', ] # 去掉不需要显示的词
words_img = wordcloud.WordCloud(font_path="msyh.ttc",
                         width = 1000,
                         height = 700,
                         background_color='white',
                         max_words=100,stopwords=stopwords)

# msyh.ttc电脑本地字体,写可以写成绝对路径
words_img.generate(title_words_str) 	  # 加载标题词云文本
words_img.to_file(r"..\file\标题词云.png") # 保存词云文件

words_img.generate(tag_words_str)		  # 加载标签词云文本
words_img.to_file(r"..\file\标签词云.png") # 保存词云文件

在上述代码中,我们首先将分词结果转换为一个字符串,以便传递给WordCloud类。然后,使用WordCloud类制作标题和标签的词云图。

【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言【Python爬虫】CSDN热榜文章热门词汇分析,python,爬虫,开发语言

📑 结论

通过本文的学习,我们掌握了使用Python获取热榜文章标题和标签的方法,并使用jieba库进行数据分析。我们学习了如何保存数据到CSV文件和文本文件中,如何使用jieba库进行分词处理,以及如何制作词云图和直方图来分析数据。

数据处理和分析是数据科学和机器学习的重要步骤之一。掌握这些技能可以帮助我们从大量的数据中提取有用的信息,并进行深入的数据分析和可视化。希望本文对你在Python数据处理和分析方面的学习有所帮助!

⭐️希望本篇文章对你有所帮助。

⭐️如果你有任何问题或疑惑,请随时向提问。

⭐️感谢阅读!文章来源地址https://www.toymoban.com/news/detail-565094.html

到了这里,关于【Python爬虫】CSDN热榜文章热门词汇分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫实战(7)--获取it某家热榜

    2024年01月16日
    浏览(40)
  • 【爬虫案例】用Python爬取抖音热榜数据!

    目录 一、爬取目标 二、编写爬虫代码 三、同步讲解视频 3.1 代码演示视频 四、获取完整源码 您好,我是@马哥python说,一名10年程序猿。 本次爬取的目标是:抖音热榜 共爬取到50条数据,对应TOP50热榜。含5个字段,分别是: 热榜排名,热榜标题,热榜时间,热度值,热榜标签。

    2024年02月16日
    浏览(60)
  • 【爬虫案例】用Python爬取知乎热榜数据!

    目录 一、爬取目标 二、编写爬虫代码 三、同步讲解视频 3.1 代码演示视频 3.2 详细讲解视频 四、获取完整源码 您好,我是@马哥python说,一名10年程序猿。 本次爬取的目标是:知乎热榜 共爬取到6个字段,包含: 热榜排名, 热榜标题, 热榜链接, 热度值, 回答数, 热榜描述。 用

    2024年02月15日
    浏览(50)
  • 如何写出全站综合热榜排前3名 python 人工智能方面的文章

    摘要:在这篇文章中,我们将介绍Python在人工智能领域中的应用,从基础概念和实践案例开始,全面探讨Python在人工智能中的关键技术和应用场景。我们将涵盖机器学习、深度学习、自然语言处理等领域的Python库和工具,并通过实际案例演示代码实现。无论你是Python编程新手

    2024年02月16日
    浏览(48)
  • 【爬虫实战】用python爬今日头条热榜TOP50榜单!

    目录 一、爬取目标 二、爬取结果 三、代码讲解 四、技术总结 五、演示视频 六、附完整源码 您好!我是@马哥python说,一名10年程序猿。 今天分享一期爬虫案例,爬取的目标是:今日头条热榜的榜单数据。 打开今日头条 首页,在页面右侧会看到头条热榜,如下: 爬取以上

    2024年02月08日
    浏览(120)
  • python批量下载csdn文章

    声明:该爬虫只可用于提高自己学习、工作效率,请勿用于非法用途,否则后果自负 功能概述: 根据待爬文章url(文章id)批量保存文章到本地; 支持将文中图片下载到本地指定文件夹; 多线程爬取; 本次示例爬取的链接地址: https://blog.csdn.net/m0_68111267/article/details/132574687

    2024年02月09日
    浏览(46)
  • Python|30行代码实现微博热榜爬虫(及可视化进阶)

    当你想要跟踪微博的热门话题时,通过编写一个Python爬虫,来获取微博热搜榜单上的实时数据,并将其可视化展示出来,通过邮件或QQ机器人将其推送,亦可以将其存档,用以保留不同时期的舆论热点。 此外,排行榜项目一向是学习Python爬虫时必备的练手项目,通过本项目,

    2024年02月05日
    浏览(51)
  • Python爬虫爬取知乎文章内容(解决最新js反爬2021.9 x-zse-96 2.0版本加密破解分析)...

    有个需求爬取知乎文章,正好记录下爬取过程以及出现问题并解决方法 我是在没有登录的情况下爬取文章的 本文仅供研究与学习使用 知乎现今的 x-zse 参数的加密方法已升级成了:x-zse-96 2.0版本。 来看这篇帖子的应该都知道,这个参数动态唯一,没有就拿不到api数据。 查阅

    2023年04月08日
    浏览(55)
  • python爬虫_django+vue+echarts可视化查询所有CSDN用户质量分

    大家好,我是yma16,本文分享关于前后分离django+vue+echarts可视化查询CSDN用户质量分。 该系列文章: python爬虫_基本数据类型 python爬虫_函数的使用 python爬虫_requests的使用 python爬虫_selenuim可视化质量分 ⭐ 效果 项目部署在inscode上:https://yma16.inscode.cc/ 表格展示文章评分 echarts图

    2024年02月12日
    浏览(64)
  • 让大模型分析csdn文章质量 —— 提取csdn博客评论在文心一言分析评论区内容

    大家好,我是yma16,本文分享关于 让大模型分析csdn文章质量 —— 提取csdn博客评论在开源大模型分析评论区内容。 vue3系列相关文章: vue3 + fastapi 实现选择目录所有文件自定义上传到服务器 前端vue2、vue3去掉url路由“ # ”号——nginx配置 csdn新星计划vue3+ts+antd赛道——利用i

    2024年02月08日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包