水一篇博客备份脚本
昨晚柑橘博客園“抖動”了,訪問好像有點問題。突然陷入對博客平臺突然訪問不了的恐懼之中。好吧,來戰,備份總是需要的。不多說了,上代碼,直接一條命令備份:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 #腳本信息: 5 """ 6 作者:陳然 7 QQ :1914518025 8 版本:博客園隨筆備份系統v1.01 9 修改: 10 1、為了支持百度云的上傳,將文件名中部分特殊符號替換了 11 """ 12 13 #引入包文件 14 import re 15 import sys 16 import logging 17 import requests 18 19 #設置全局設置 20 logging.basicConfig(format="%(message)s",level=logging.INFO) 21 22 #定義全局變量 23 Particle_Urls_List = [] #全局文章對應的URL列表 24 BlogName = "你的名字" #博客名,這個在地址中標明唯一博客歸屬主人 25 26 #全局函數定義 27 def particle_backup(url): 28 '''備份單篇文章函數''' 29 headers = {"User-Agent":"Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3"} 30 try: 31 response = requests.get(url,headers=headers,timeout=3) 32 except Exception,ex: 33 log_string = "[-]訪問%s失敗,錯誤原因:%s"%(str(url),str(ex)) 34 logging.error(log_string) 35 return -1 36 if response.status_code == 200: 37 #獲取文章標題作為保存的HTML文件的名字(為了支持上傳百度云,將標題中的特殊符號替換了!) 38 title = response.content.split("</title>")[0].split("<title>")[-1].replace(" ","").replace("?","問號").replace("?","問號").replace("#","井號") 39 logging.info("[+]開始備份:%s"%str(title)) 40 fd = open("./backup/%s.html"%title,"w")#保存在所在目錄下的backup文件夾下 41 fd.write(response.content) 42 fd.close() 43 logging.info("[+]備份:%s成功"%str(title)) 44 return 0 45 else: 46 return -1 47 48 def get_particle_url(url=None): 49 '''獲取所有文章URL函數''' 50 global BlogName 51 global Particle_Urls_List 52 headers = {"User-Agent":"Mozilla/5.0 (iPhone; U; CPU like Mac OS X) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3"} 53 if url == None: 54 url = "http://www.cnblogs.com/%s/"%BlogName 55 try: 56 response = requests.get(url,headers=headers,timeout=5) 57 except Exception,ex: 58 log_string = "[-]訪問%s失敗,原因:%s"%(str(url),str(ex)) 59 logging.error(log_string) 60 return -1 61 if response.status_code == 200: 62 text = response.content 63 ret = re.findall(r"http://[^/]+?/%s/p/\d+\.html"%BlogName,str(text))#分析提取文件中的所有文章URL 64 Particle_Urls_List.extend(ret) 65 Particle_Urls_List = list(set(Particle_Urls_List))#去重 66 return text 67 else: 68 logging.error("訪問%s失敗,未知原因,返回碼:%s"%(str(url),str(response.status_code))) 69 return -1 70 71 def start_buckup(): 72 '''開始備份主函數''' 73 page_size = 2 74 ret = get_particle_url() 75 logging.info("[+]開始分析第1頁!") 76 while True: 77 if ret.find("http://www.cnblogs.com/%s/default.html?page="%BlogName) >= 0: 78 particle_url = "http://www.cnblogs.com/%s/default.html?page=%s"%(BlogName,str(page_size)) 79 ret = get_particle_url(url=particle_url) 80 logging.info("[+]開始分析第%s頁"%str(page_size)) 81 page_size += 1 82 else: 83 break 84 85 #程序入口執行點 86 if __name__ == "__main__": 87 try: 88 if sys.argv[1] != None: 89 BlogName = sys.argv[1]#輸入備份誰的文章 90 except Exception: 91 pass 92 start_buckup() 93 for url in Particle_Urls_List: 94 particle_backup(url) 95 logging.info("備份完成")?
轉載于:https://www.cnblogs.com/KevinGeorge/p/8404950.html
總結
- 上一篇: BZOJ2821: 作诗(Poetize
- 下一篇: python -- 进程