我用Python爬虫+数据分析总结了我在CSDN的2021年度

Posted il_持之以恒_li

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用Python爬虫+数据分析总结了我在CSDN的2021年度相关的知识,希望对你有一定的参考价值。

时间过得很快,一眨眼,2021年这一年又过去了。在这一年当中,我学到了很多知识,也遇到了很多问题,但是随着时间的流逝,这些知识都被我一一消化掉,问题都被我一一解决掉。不论是知识点还是我遇到的问题,我都把它们分享到了CSDN,下面让我们来看看吧!

1. 我在CSDN的2021年度创作博客数量进行分析


我在CSDN的20201年度总共创作了50篇博客,除了3月份之外,其他每个月都有2篇博客以上,数据分析如下:

import requests
from matplotlib import pyplot as plt
import json

user_id = 'qq_45404396'  # 用户id
url = 'https://blog.csdn.net/community/home-api/v1/get-place-on-file?username='.format(user_id)
headers = 
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/94.0.4606.71 Safari/537.36'

rsp = requests.get(url=url, headers=headers)
dict2 = json.loads(rsp.text)
data2021 = dict2['data'][1]['months']
month_count =   # 每个月创作的数量
for d in data2021:
    month_count[int(d['month'])] = d['count']
for i in range(1, 13):
    if i not in month_count.keys():
        month_count[i] = 0
months = sorted(month_count.items(), key=lambda a: a[0])  # 根据月份排序
x_data = [d[0] for d in months]
y_data = [d[1] for d in months]
plt.rcParams['font.sans-serif'] = ['simhei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像时负号 ‘-’ 显示为方块的问题
plt.title('我的2021年度在CSDN的创作历程')
plt.plot(x_data, y_data, color='red', linestyle='--')
plt.xlabel('月份')
plt.ylabel('篇数')
for d in months:
    plt.text(d[0], d[1], d[1], ha='center', va='bottom', fontsize=20)
plt.show()


可以看到我在11月份的创作博客数量是最多的,这也和我在这个时间充裕有关。

2. 我在CSDN的2021年度创作博客分类进行分析

就是小编想分析一下近1年以内自己写的博客在那个分类专栏里最多。

参考代码和运行结果如下:

import requests
import json
from lxml import etree
from matplotlib import pyplot as plt
import numpy as np

user_id = 'qq_45404396'  # 用户id
url = 'https://blog.csdn.net/community/home-api/v1/get-place-on-file?username='.format(user_id)
headers = 
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'

rsp = requests.get(url=url, headers=headers)
dict2 = json.loads(rsp.text)
data2021 = dict2['data'][1]['months']
url2 = 'https://blog.csdn.net/community/home-api/v1/get-business-list'
params = "page": "1",
          "size": "20",
          "businessType": "blog",
          "orderby": "",
          "noMore": "false",
          "year": "2021",
          "month": "12",
          "username": "".format(user_id)

urls = []
for d in data2021:
    month = d['month']
    params['month'] = month
    params['page'] = '1'
    page = 1
    while True:
        rsp2 = requests.get(url=url2, params=params, headers=headers)
        dict3 = json.loads(rsp2.text)
        total = dict3['data']['total']  # 当月创作的博客数量
        for d in dict3['data']['list']:
            urls.append(d['url'])
        if total <= 20 * page:
            break
        else:
            page += 1
            params['page'] = str(page)

text_dict = 
for url2 in urls:
    rsp3 = requests.get(url=url2, headers=headers)
    html = etree.HTML(rsp3.text)
    texts = html.xpath("//div[@class='tags-box artic-tag-box']/a[not (@data-report-click)]/text()")
    if len(texts) > 0:
        for text in texts:
            if text not in text_dict:
                text_dict[text] = 1
            else:
                text_dict[text] += 1

# for key in text_dict:
#     print(key,text_dict[key])
labels = [key for key in text_dict]
quantities = [value for value in text_dict.values()]
plt.rcParams['font.sans-serif'] = ['simhei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像时负号 ‘-’ 显示为方块的问题
plt.figure(figsize=(20, 20), dpi=100)
explode = np.zeros(len(labels))
plt.pie(quantities, labels=labels, autopct="%1.2F%%", textprops='fontsize': 28, explode=explode, labeldistance=1.0,
        startangle=90, shadow=True)
plt.legend(fontsize=28)
plt.title('我在CSDN的2021年度创作博客分类进行分析')
plt.axis('equal')
plt.show()


从上述图片上可以清晰地看到小编自己那个分类专栏在这1年内写的博客最多。

3. 我在CSDN的2021年度创作的博客阅读数

虽然小编写的博客内容不怎么的,但是这一年来阅读数还是可以吧!(自己认为的哈!)

import requests
import json
from lxml import etree

user_id = 'qq_45404396'  # 用户id
url = 'https://blog.csdn.net/community/home-api/v1/get-place-on-file?username='.format(user_id)
headers = 
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'

rsp = requests.get(url=url, headers=headers)
dict2 = json.loads(rsp.text)
data2021 = dict2['data'][1]['months']
url2 = 'https://blog.csdn.net/community/home-api/v1/get-business-list'
params = "page": "1",
          "size": "20",
          "businessType": "blog",
          "orderby": "",
          "noMore": "false",
          "year": "2021",
          "month": "12",
          "username": "".format(user_id)

urls = []
for d in data2021:
    month = d['month']
    params['month'] = month
    params['page'] = '1'
    page = 1
    while True:
        rsp2 = requests.get(url=url2, params=params, headers=headers)
        dict3 = json.loads(rsp2.text)
        total = dict3['data']['total']  # 当月创作的博客数量
        for d in dict3['data']['list']:
            urls.append(d['url'])
        if total <= 20 * page:
            break
        else:
            page += 1
            params['page'] = str(page)

count_sum = 0
for url2 in urls:
    rsp3 = requests.get(url=url2, headers=headers)
    html = etree.HTML(rsp3.text)
    count = html.xpath("//div[@class='bar-content']/span[@class='read-count']/text()")
    if len(count) > 0:
        count_sum += int(count[0])
print('我在CSDN的2021年度创作的博客阅读数:',count_sum)


虽然平均下来每篇博客数量没有超过2000,但是小编觉得自己在新的一年内肯定能把自己的博客内容质量提升上去。

4. 总结

在2021年小编觉得自己挺废的,很多时间都花费在了游戏上了,没有好好地静下来学习。在2022年小编有一个梦想,那就是顺利通过2022年研究生考试,虽然在2022年度,小编创作的博客数量可能会少很多,但是小编会依旧坚持每个月写一篇博客,记录一下自己在这个月的状态和学习情况。
如果各位读者觉得小编的这篇总结写的不错的话!希望给小编点上一个小小的赞,同时,作为读者的你,如果也是在准备考研或者已经考研成功的,希望能给小编一些建议,小编在此感谢!另外,如果读者对于小编上述代码有什么不懂的地方,欢迎到下方留言区留言,小编会一一解答。

以上是关于我用Python爬虫+数据分析总结了我在CSDN的2021年度的主要内容,如果未能解决你的问题,请参考以下文章

我用 Python 爬取微信好友,最后发现一个大秘密

我用 Python 爬取微信好友,最后发现一个大秘密

我用Python把《白蛇2青蛇劫起》的评论做了数据可视化分析

Python 小爬虫流程总结

我用 Python 爬取微信好友,最后发现一个大秘密

人生苦短,我用Python--爬虫模拟登陆教务处并且保存数据到本地