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

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在个人资料里查看


http://www.kler.cn/a/582860.html

相关文章:

  • 【HeadFirst系列之HeadFirstJava】第17天之深入解析 Java 包与 JAR:从代码组织到应用发布全流程(含实战)
  • OpenGL实现场景编辑器
  • HarmonyOS学习第19天:感知世界的 “超能力”,HarmonyOS 传感器揭秘
  • How to install a package in offline scenario in Ubuntu 24.04
  • OpenAI Agent 工具包深度解析:重塑 AI 代理开发的未来图景
  • 【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器---tinyEasyMuduoWebServer
  • SQL Server 列存储索引:大幅提升查询性能的利器
  • Spring Boot + MySQL + MyBatis:企业级应用开发实战
  • Git 的详细介绍及用法
  • TensorFLow深度学习实战(11)——风格迁移详解
  • 数字IC/FPGA校招笔试题解析(一)
  • C# NX二次开发:模型导入和向量及点位的使用
  • useEffect的执行是异步的
  • 【学写LibreCAD】 2.1 pdf_print_loop文件
  • Spring的基础事务注解@Transactional
  • C++零基础LeetCode热题100- 128.最长连续序列
  • 大模型微调|使用 LLaMA-Factory 微调 Llama3-8B-Chinese-Chat 完成知识问答任务
  • [高阶技术了解]WebRPC详解
  • Linux错误(5)程序fork子进程后访问内存触发缺页中断(COW)
  • 四、子串——11. 滑动窗口最大值