那是一個月黑風高、風雨交加、伸手不見五指的黑夜,冥冥之中好似要發生點什麼
因為出了個 "意外" 再加上疫情原因,我一度變成了 "植物人",差點去了二次元,好在 "搶救" 回來了。這幾年找我的消息我也收不到了,感謝那些還在和關心我的人,謝謝。
錯的並不是我,而是這個冥冥之中注定的世界
這些年找我的人和事,我也全部不知道,QQ、微信一些消息太久也都收不到了
看到我多年未亮起的頭像重新亮了起來,不少朋友都來問我怎麼回事。
很感謝那些素未謀面的網友,或許叫朋友更親切些,你們還一直惦記著我,讓我很是感動。
一找就是找了我三年
滿世界的找我
感動的不要不要的
下面才是正文
關於博客#
博客首次建成時間是 2016-06-09,如今已經成立了快 8 年之久了,在各種災難中也頑強的生存了下來
期間也認識了好多好多的小夥伴,一起討論,一起進步,一起成長。所以我並不想讓博客就此消失
博客數據的原本有自動備份到七牛雲的,但直到現在才知道,備份不知道什麼原因,19 年 10 月份左右就停掉了
都說互聯網是有記憶的,本著 “頭可斷血可流,數據不能丟” 的精神,我在茫茫網絡中尋找數日,終究還是讓我找到了博客的網站存檔。 可以點擊這裡去看我的博客歷史版本archive (國外著名的網站檔案館項目)
於是就寫了個 Python 腳本把文章和評論數據給爬下來了。
爬完後我發現有人已經給我備份了(我博客之前是別人贊助的三年)
博客搬遷#
博客搬遷到博客園,其實也是不得已而為之
博客的原域名(52ecy.cn,moeins.cn,moeins.com)在到期後被人搶注,溝通無果後,一時半會是拿不回來的了
迫無無奈吧,只能暫且先將博客搬遷到博客園來(之後是否在自建的話再做打算吧)。另一方面也可能是現在沒有太多閒時間來折騰自己的系統,放在博客園反倒是更加省心省力。但是評論就沒那麼方便了,需要登錄才可以發表評論,當然有啥問題也可以直接在群里 @我
其實早在 18 年底的時候,我就已經有想換主題的想法了 ->這下真鴿了 (我可真能拖,太佩服我自己了)
無奈之前的 emlog 系統沒有合適現成的,自己又懶著移植,便一直一拖再拖。
原來那個主題我一直就想換掉了,因為不太好看,沒有個性,就是規規矩矩的,並不符合我的個性和風格
但是呢,我審美雖然特別棒,但你要讓我自己寫一套符合我審美的主題出來那就是有點困難了
後來突然看到博客園用戶不忘編碼的博客,心想博客園還支持這樣自己美化。
一句 “我又不想他博客從此也失聯,無法訪問打開” 後便決定暫時先搬遷到博客園再說吧。
一直就想換這種二次元風格的主題了
目前此博客美化風格樣式基於櫻花莊的白貓的 WordPress 主題 Sakura,不忘編碼移植,但 BUG 和細節問題較多,我又花了兩天優化了一下,但也好多頁面沒優化,之後再慢慢來吧 (能明天在做的事為什麼不留給明天的我去做呢)
由於之前的 emlog 博客使用的是 HTML 的 TinyMCE 編輯器,而且還是很老的版本,所以生成的文章的 HTML 代碼也是相當的混亂,所以搬遷至博客園的 markdown 格式的時候出現了很多的樣式不兼容問題,我也已經盡可能的修復了一些,但也沒法保證所有文章都能正常的顯示,看到的話再慢慢修吧
博客園不支持自建博客系統的一鍵搬遷功能,所以文章的發佈時間和評論的信息就不能一同搬遷了,但我又想保留原汁原味,所以我就一併寫到文章當中了,私密評論也還是隱藏了。
(自建博客系統的問題也和博客園團隊溝通了,說後期開發會加上,也不為難他們了,他們也入不敷出了,文章的發佈使用了 Cnblog 的 VScode 插件)
友情鏈接我也單獨搞了一個頁面給搬遷過去了,但也很多友鏈的網站也已經無法訪問了,有的也已經下掉友鏈了。
現在的我也不是獨立域名了,都不好意思再去申請友鏈了.....
之前博客的所有圖片都是存在新浪的,一直擔心哪天又給丟了,所以平常都是一份七牛雲,一份新浪,現在也全部給搬遷到博客園來了
我為什麼要寫博客?#
有人會覺得這些有這麼重要嗎?
有時候我也是想說點什麼,想寫點什麼,但又沒人說,沒地方寫,就是需要那麼一個地方
我做博客也不是為了什麼流量啊,賺錢之類的,就想搞一片自己的小天地,在自己的小圈子裡瞎混哒
也許也正因這一份熱愛,所以我才能慢慢堅持下來,奈何事與願違,出了點意外
以前好多博客圈的朋友都要麼不見了,要麼都不更新了,真的好可惜啊,我都還沒來得及認識他們 (尤其是月宅那貨)
@寒穹那貨還說我:“阿珏,那麼久了怎麼還那麼二刺螈”。
我想這麼多年間,一直沒變的就是我了吧。
很高興,也很感謝還有那麼多人記得我,對我那麼好。
好像不該發這麼多圖片的
紀念逝去的博客,永遠活在我的 127 裡
Python 代碼#
搬遷的 Python 的代碼,雖然沒啥用,但算是記錄一下,供有需要的人學習學習
點擊查看代碼
import os
import re
import time
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, parse_qs
# 指定文件路徑
file_path = "C:\\Users\\Administrator\\Desktop\\blog\\content.txt"
save_folder = "C:\\Users\\Administrator\\Desktop\\blog\\content\\"
def save_to_file(data, file_name):
try:
file_path = os.path.join(save_folder, file_name + ".txt")
with open(file_path, 'a', encoding='utf-8') as file:
file.write(data)
print("數據已成功保存到文件:", file_path)
except Exception as e:
print("保存文件時出錯:", e)
def remove_html_tags(text):
soup = BeautifulSoup(text, 'html.parser')
return soup.get_text()
def comment(html_content):
comment_matches = re.findall(r'<div class="comment (.*?)" id="comment-\d+">[\s\S]*?<img .*?inal=".*?202.*?/([^"]+)"/>[\s\S]*?<div ' +
'class="comment-content">(.*?)</div>[\s\S]*?itle=".*?">(.*?)</span>[\s\S]*?<span class="comment-time">(.*?)</span>',
html_content, re.DOTALL)
article_comments = ''
if comment_matches:
i = 0
for comment_match in comment_matches:
if 'comment-children' in comment_match[0]:
i += 1
is_reply_comment = '>' * i
else:
is_reply_comment = '>'
i = 1
#頭像 大小控制在40
# 兼容gravatar頭像 https://secure.gravatar.com/avatar/
if 'gravatar.com' in comment_match[1]:
avatar_url = '![](' + str(re.sub(r'(\?|&)s=\d+', '\\1s=40', str(comment_match[1]))) + ') '
else:
parsed_url = urlparse(comment_match[1])
query_params = parse_qs(parsed_url.query)
dst_uin = query_params.get('dst_uin', ['1638211921'])
avatar_url = '![]('+'https://q1.qlogo.cn/g?b=qq&nk='+str(dst_uin[0])+'&s=40'+') '
comment_content = comment_match[2].strip()
nickname = comment_match[3].strip()
comment_time = comment_match[4].strip()
link_url = re.search(r'030.*?/(.*?)" .*? rel', nickname)
# 構造評論的markdown格式
comment_content = is_reply_comment + comment_content.replace('\n', '>')
comment_content = comment_content.replace('##這篇評論是私密評論##', '[#這篇評論是私密評論#]')
# 替換表情圖片
soup = BeautifulSoup(comment_content, 'html.parser')
for img in soup.find_all('img'):
title_text = img.get('title', '')
img.replace_with('[#'+title_text+']')
comment_content = soup.get_text()
# 保存評論用戶的URL地址
if link_url:
nickname = '['+remove_html_tags(nickname)+']'
link_url = '(' + link_url[1] + ') '
else:
link_url = ''
nickname = remove_html_tags(nickname) + ' '
if i == 1:
article_comments += '\n'
article_comments += is_reply_comment + avatar_url + nickname + link_url + comment_time + '\n' + comment_content + '\n'
return article_comments
else:
return ''
def process_article(url):
print("目前執行===="+url)
response = requests.get(url)
if response.status_code == 200:
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
article_title = soup.find('h1', class_='article-title')
article_mate = soup.find('div', class_='article-meta')
article_article = soup.find('article', class_='article-content')
soup_content = BeautifulSoup(article_article.prettify(), 'html.parser')
img_tags = soup_content.find_all('img')
pattern = r"https://web.*?_/"
for img_tag in img_tags:
if 'data-original' in img_tag.attrs:
original_url = img_tag['data-original']
else:
original_url = img_tag['src']
cleaned_url = re.sub(pattern, '', original_url)
new_url = 'https://image.baidu.com/search/down?url=' + cleaned_url
img_tag['src'] = new_url
del img_tag['data-original']
article_comment = soup.find('div', class_='article_comment_list')
data = "###### `當你看到這個提示的時候,說明當前的文章是由原emlog博客系統搬遷至此的,文章發佈時間已過於久遠,編排和內容不一定完整,還請諒解`\n\n" + '###' + article_title.text.strip()+'\n\n'+article_mate.text.strip().replace('\n', '').replace('\r', '').replace('\t', '')+'\n' + soup_content.prettify().replace('<article class="article-content">', '').replace('</article>', '')
save_to_file(data + '\n網友評論:\n\n', article_title.text.strip())
data = comment(html_content)
if not data:
return
save_to_file(data, article_title.text.strip())
if article_comment:
comment_links = re.findall(r'<a\s+href="(.*?)nts"', str(article_comment))
if comment_links:
print('有分頁評論數據')
for link in comment_links:
url = link +"nts"
print(url)
response = requests.get(url)
if response.status_code == 200:
html_content = response.text
data = comment(html_content)
if not data:
return
save_to_file(data, article_title.text.strip())
print("寫分頁評論數據中")
else:
print("無法獲取網頁。")
def main():
with open(file_path, 'r', encoding='utf-8') as file:
for line in file:
segments = line.strip().split("----")
if len(segments) > 0:
url = segments[0]
process_article(url)
else:
print("在這一行中未找到URL。")
print('開啟下一篇文章')
time.sleep(4)
if __name__ == "__main__":
main()