前言
不是很懂爬蟲,所以就叫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在個人資料里查看