当前位置: 首页 > news >正文

CSDN统计个人创作总字数

前言

不是很懂爬虫,所以就叫deepseek写了一个


用起来很简单,但是有一个小问题,就是统计的是总字符数。代码片会被统计进去,Markdown语法也会被统计进去。


不过我没有太多需求,能大概统计一下满足以下小小的好奇心和成就感就行。如果有额外需求可以叫deepseek再改

代码

import requests
from bs4 import BeautifulSoup
import time
import random

# 替换为你的CSDN博客主页URL
base_url = "https://blog.csdn.net/用户id/article/list/"

# 设置请求头,模拟浏览器访问
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}

# 获取博客文章列表
def get_article_links(base_url, headers):
    article_links = []
    page = 1
    while True:
        url = f"{base_url}{page}"
        response = requests.get(url, headers=headers)
        soup = BeautifulSoup(response.text, 'html.parser')
        
        # 查找所有文章的链接
        articles = soup.find_all('div', class_='article-item-box')
        if not articles:
            break  # 如果没有文章了,退出循环
        
        for article in articles:
            link = article.find('h4').find('a')['href']
            article_links.append(link)
        
        page += 1
        time.sleep(random.uniform(1, 3))  # 随机延迟,避免触发反爬虫
    
    return article_links

# 统计文章字数
def count_words(article_links, headers):
    total_words = 0
    cnt = 0
    for link in article_links:
        try:
            # 随机延迟,避免触发反爬虫
            time.sleep(random.uniform(1, 3))
            
            # 获取文章内容
            article_response = requests.get(link, headers=headers)
            article_soup = BeautifulSoup(article_response.text, 'html.parser')
            
            # 查找文章正文部分(根据CSDN的HTML结构)
            content = article_soup.find('div', class_='markdown_views') or article_soup.find('article', class_='baidu_pl')
            if content:
                text = content.get_text(strip=True)  # 提取纯文本
                word_count = len(text)  # 统计字数(按字符数计算)
                total_words += word_count
                cnt += 1
                print(f"文章链接: {link}, 字数: {word_count} , 序号 : {cnt}")
            else:
                print(f"文章链接: {link}, 未找到正文内容")
        except Exception as e:
            print(f"文章链接: {link}, 抓取失败: {e}")
    
    return total_words

# 获取所有文章的链接
article_links = get_article_links(base_url, headers)

# 统计总字数
total_words = count_words(article_links, headers)
print(f"总字数: {total_words}")

用法

只需要把base_url = "https://blog.csdn.net/用户id/article/list/"这里的用户id替换成你的用户id就可以了


用户id在个人资料里查看

相关文章:

  • Java对接AI大模型(一)【Langchain4j】
  • mcp 是一种什么协议,怎么构建mcpserver,怎么实现多智能体的调用
  • 6. MySQL 索引的数据结构(详细说明)
  • 【MyBatis Plus中DB包的静态方法详解】
  • 计算机四级 -数据库原理 - 第1章「数据库原理概述」
  • SpringBoot注解驱动CRUD工具:spring-avue-plus
  • 概率论与数理统计
  • MyBatis的级联查询(一对一、一对多、多对多)
  • 前端系统测试(单元、集成、数据|性能|回归)
  • Spring Boot中的404错误:原因、影响及处理策略
  • 基于阿里云服务器搭建个人图床
  • 如何使用Cursor的claude-3.7模型来开发高保真的原型设计图,学会写好的提示词人人都是设计师
  • MySQL 存储引擎与事务深度解析
  • opencv+ONNX模型的推理
  • 不定方程求解(信息学奥赛一本通-1101)
  • EB-Cable许可管理中的数据安全与隐私保护
  • 江科大51单片机笔记【16】AD/DA(上)
  • Linux 跨进程同步方案
  • MySQL与Canal、RabbitMQ集成指南
  • 分布式存储学习——HBase表结构设计
  • 案件发回重审,李在明参选韩总统之路再添波折
  • 制定出台民营经济促进法有何重大意义?全国人大常委会法工委回应
  • 百年传承,再启新程,参天中国迎来2.0时代
  • 排除燃气爆炸、人为放火可能,辽宁辽阳火灾事故起火原因正在调查
  • 黄宾虹诞辰160周年|一次宾翁精品的大集结
  • 昂立教育:去年减亏1.39亿元,今年以“利润持续增长”为核心目标