前言
不是很懂爬虫,所以就叫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 = 1while 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 += 1time.sleep(random.uniform(1, 3)) # 随机延迟,避免触发反爬虫return article_links# 统计文章字数
def count_words(article_links, headers):total_words = 0cnt = 0for 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_countcnt += 1print(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在个人资料里查看