hi 小狼的世界 你在已經發表了373篇文章
2023年你一共寫了24篇文章
yui學習筆記 – css rest、base、font以及grid是你在02:03寫下的,夜已深注意休息
只需要本機安裝了python環境就可以執行,如果沒有python環境也沒關係,裝上docker幫你快速搭建開發環境,可以參考我的 利用docker快速構建開發環境
import os, sys, getopt
import re
import requests
import json
from bs4 import beautifulsoup
class generate():
blog_title = ''
def __init__(self, blog_url, year = 2020):
self.blog_url = blog_url
self.year = year
# 從列表頁獲取所有文章相關資訊
def _get_post_lists(self):
blog_data =
html = requests.get(self.blog_url).text
soup = beautifulsoup(html, 'html.parser')
self.blog_title = soup.find('a', attrs=).text.strip()
next_page = soup.find('div', attrs=)
next_page_link = next_page.a['href']
# 儲存本頁的文章資訊
blog_data += soup.find_all('div', attrs=)
while true:
next_html = requests.get(next_page_link).text
next_soup = beautifulsoup(next_html, 'html.parser')
blog_data += next_soup.find_all('div', attrs=)
next_pager = next_soup.find('div', attrs=)
next_page_link = next_pager.find_all('a')[-1]['href']
else:
break
return blog_data
# 將抓取的資料準備統計所需的格式
def _prepare_data(self, blog_data):
stat_data =
post_data = {}
for item in blog_data:
# print(item)
post_data['post_title'] = item.find('div', attrs=).text.strip()
# post_data['post_desc'] = item.find('div', attrs=).text.strip()
post_data['post_date'] = re.search(r'\d-\d-\d', item.find('div', attrs=).contents[0]).group()
post_data['post_time'] = re.search(r'\d:\d', item.find('div', attrs=).contents[0]).group()
post_data['view_count'] = int(re.search(r'\d+', item.find('span', attrs=).text.strip()).group())
post_data['digg_count'] = int(re.search(r'\d+', item.find('span', attrs=).text.strip()).group())
post_data['comment_count'] = int(re.search(r'\d+', item.find('span', attrs=).text.strip()).group())
post_data = {}
return stat_data
# 計算統計指標
# 報告的指標
# * 文章總數量
# * 文章閱讀總量
# * 最高閱讀量
# * 推薦總量
# * 最晚發文的時間與文章名稱
def _calc_stat(self, blog_data):
stat_data = {}
stat_data['total_post'] = len(blog_data)
stat_data['year_post'] = 0
stat_data['total_view'] = 0
stat_data['total_comment'] = 0
stat_data['total_digg'] = 0
stat_data['max_view'] =
stat_data['max_comment'] =
stat_data['max_digg'] =
# stat_data['early_post'] = {}
stat_data['late_post'] =
for item in blog_data:
stat_data['total_view'] += item['view_count']
stat_data['total_comment'] += item['comment_count']
stat_data['total_digg'] += item['digg_count']
if item['view_count'] > stat_data['max_view']['view_count']:
stat_data['max_view']['view_count'] = item['view_count']
stat_data['max_view']['post_title'] = item['post_title']
if item['comment_count'] > stat_data['max_comment']['comment_count']:
stat_data['max_comment']['comment_count'] = item['comment_count']
stat_data['max_comment']['post_title'] = item['post_title']
if item['digg_count'] > stat_data['max_digg']['digg_count']:
stat_data['max_digg']['digg_count'] = item['digg_count']
stat_data['max_digg']['post_title'] = item['post_title']
if item['post_date'] > '2019-12-31':
stat_data['year_post'] += 1
# 只考慮了0點以後發文的問題
if item['post_time'] < '05:00' and item['post_time'] > stat_data['late_post']['post_time']:
stat_data['late_post']['post_time'] = item['post_time']
stat_data['late_post']['post_title'] = item['post_title']
return stat_data
def _render_md(self, stat_data):
md_string = "## " + self.blog_title + " 的年度報告\n"
md_string += "hi " + self.blog_title + ' '
md_string += "你在已經發表了**" + str(stat_data['total_post']) + "**篇文章\n"
md_string += "2023年你一共寫了**" + str(stat_data['year_post']) + "**篇文章\n"
md_string += "\n"
md_string += "\n"
md_string += "你閱讀量最高的一篇文章是 **" + stat_data['max_view']['post_title'] + "**,共有 **" + str(stat_data['max_view']['view_count']) + "** 次閱讀\n"
md_string += "\n"
md_string += "**" + stat_data['late_post']['post_title'] + "** 是你在 **" + stat_data['late_post']['post_time'] + "** 寫下的,夜已深注意休息\n"
md_string += "\n"
return md_string
def run(self):
blog_data = self._get_post_lists()
blog_data = self._prepare_data(blog_data)
stat_data = self._calc_stat(blog_data)
print(self._render_md(stat_data))
pass
部落格園備份提取
在記錄了一些文章,想把它備份到github上,還好大部分博文都是markdown格式的,也支援備份匯出,但是到處的是單個的xml檔案。為了把每一篇博文單獨提取出來,所以寫了乙個小程式來提取。github中需要如下圖所示的格式,方能正確的分類 檔名需要日期開頭,檔案內容中最前面一段是文章的一些描述資訊...
python部落格園 python 模擬部落格園系統
作業 用 模擬系統。專案分析 一 首先程式啟動,頁面顯示下面5內容供使用者選擇 1.請登入 2.請註冊 3.進入文章頁面 5.進入日記頁面 6.進入收藏頁面 7.登出賬號 8.退出整個程式 二 必須實現的功能 1.註冊功能要求 a.使用者名稱 密碼要記錄在檔案中。b.使用者名稱要求 只能含有字母或者...
部落格園部落格自動生成目錄 目錄索引
回到頂部 近來寫了一些比較長的部落格,閱讀起來很不方便,看園子裡其他園友的部落格有些有目錄,就想給自己的部落格增加目錄結構,增加文章可讀性 回到頂部 回到頂部 通過點選目錄索引,跳轉到對應的章節,並可回到目錄頂端 回到頂部 回到頂部 確保自己的後台支援js 這個預設是不支援,需要向官方申請,在部落格...