微博備份到本地導出DayOne的json格式用python實現(xiàn)微博導入到DayOne Json新Json導入到DayOne一、微博備份到本地

用chrome下載

安裝后,登錄到自己的微博,打開微博界面,開" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 將新浪微博備份后導入到DayOne(python實現(xiàn))

將新浪微博備份后導入到DayOne(python實現(xiàn))

時間:2023-05-19 20:48:02 | 來源:網(wǎng)站運營

時間:2023-05-19 20:48:02 來源:網(wǎng)站運營

將新浪微博備份后導入到DayOne(python實現(xiàn)):目錄

  1. 微博備份到本地
  2. 導出DayOne的json格式
  3. 用python實現(xiàn)微博導入到DayOne Json
  4. 新Json導入到DayOne

一、微博備份到本地

用chrome下載

安裝后,登錄到自己的微博,打開微博界面,開始抓取,抓取后會有一些html文件,保存到本地,注意和代碼放在同一個文件夾內。

二、導出DayOne的json格式

打開DayOne,在導航頁面點擊settings——IMport/Export——Export Day One Json(.zip),分享到QQ或微信,大概是叫“Export-日志.zip”的名稱,在電腦端下載解壓,將“AllEntries.json”文件放入到和代碼、微博同一文件夾下。

AllEntries.json和代碼文件“wblogFormat.py”(名稱自己定)和抓取后的微博html文件放在同一個文件夾。
三、用python實現(xiàn)微博導入到DayOne Json

新建“wblogFormat.py”文件,復制粘貼以下代碼。保存(還是和json、html在同一個文件夾下噢)

import osfrom requests_html import HTMLSessionfrom requests_file import FileAdapter # 掛載到本地import time # 英文時間轉中文import jsonimport uuid # 需要生成UU唯一碼import sys# 這是一個寫入dayone Json的函數(shù),位置信息請自行在location中修改def DayOneImport(ss_time3, ss_content): # 以下是DayOne的Json格式和生成UUID ss_uuid = str(uuid.uuid1()).replace('-', '') ss_dict = {'audios': [], 'creationDate': ss_time3, 'location': {'address': '芙蓉社區(qū), 芙蓉區(qū), 杭州, 湖南', 'administrativeArea': '湖南', 'country': 'China', 'latitude': 28.191735133055555, 'localityName': '杭州', 'longitude': 113.0060535813889, 'placeName': '芙蓉社區(qū)', 'region': {'center': {'latitude': 28.191735133055555, 'longitude': 113.0060535813889}}}, 'photos': [], 'starred': False, 'tags': ['微博'], 'text': ss_content, 'timeZone': 'Asia/Shanghai', 'uuid': ss_uuid, 'weather': {'conditionsDescription': 'Possible Light Rain and Humid', 'pressureMB': 1011.2, 'relativeHumidity': 1.0, 'temperatureCelsius': 27.0, 'visibilityKM': 14.897, 'weatherCode': 'sunny', 'weatherServiceName': 'Forecast.io', 'windBearing': 254.0, 'windChillCelsius': 0.0, 'windSpeedKPH': 1.16}} # 開始寫入到同一文件夾內的Json中 with open(r'AllEntries.json', 'r', encoding='UTF-8-sig') as f2: diary_dict = json.load(f2) diary_lists = diary_dict['entries'] diary_lists.append(ss_dict) diary_dict.update({'entries': diary_lists}) f2.close() with open(r'AllEntries.json', 'w', encoding='UTF-8-sig') as f3: json.dump(diary_dict, f3, ensure_ascii=False) f3.close()# 獲取文件夾內所有的微博文件def getAllFilePath(fPath): BlogList = [] for root, dirs, files in os.walk(fPath): # print("根目錄:",root,'/n') # print("所含目錄:",dirs, '/n') # print("所含文件:",files, '/n——————————————————————————') for file in files: if '.html' in file: BlogA = os.path.join(root, file) BlogList.append(BlogA) # 返回一個是html的日志內容list return BlogListBlogList = getAllFilePath(r".")print(BlogList)# 開始抓取保存的微博網(wǎng)頁session = HTMLSession()# 掛載文件session.mount('file://', FileAdapter())# Windows系統(tǒng)路徑目錄分隔符為反斜杠,但get需要正斜杠所以先進行一下替換pwd = os.getcwd().replace("//", "/")# 測試發(fā)現(xiàn)使用相對路徑讀不到文件,需要使用絕對路徑wb_page = 1 # 微博html篇數(shù)# 遍歷每一篇htmlfor WBlogContent in BlogList: # 每一篇html需要變換下路徑格式 WBlogContent = WBlogContent.replace('.//', '/').replace('//', '/') r = session.get(f'file:///{pwd}' + WBlogContent) # 開始抓取了,抓取到了當前html下的所有微博數(shù) wb_list = r.html.find("div[class='card m-panel card9 weibo-member']") print(len(wb_list)) wb_num = 1 # 保存的微博數(shù),不應放在循環(huán)中 # 對當前html下的所有微博數(shù)進行遍歷 for wb_list15 in wb_list: weiboContent = '' # 獲得微博文本 weiboOgHtmltext = wb_list15.find("div[class='weibo-text']")[0].text # print('現(xiàn)在是爬取的是:' + weiboOgHtmltext+'/n') # 時間轉換成DAYOne格式 weiboOgTime = wb_list15.find("span[class='time']")[0].text.replace(' +0800', '') timeArray = time.strptime(weiboOgTime, "%a %b %d %H:%M:%S %Y") weiboOgTime_str = time.strftime("%Y-%m-%dT%H:%M:%SZ", timeArray) # 來源于也要獲得 weiboOgFrom = wb_list15.find("span[class='from']")[0].text weiboContent = weiboContent + weiboOgHtmltext # 如果有鏈接的話,獲取鏈接 if wb_list15.find("div[class='weibo-text']")[0].find('a') != []: weiboHtmlUrls = wb_list15.find("div[class='weibo-text']")[0].find('a') weiboHtmlUrlDict = {} for weiboHtmlUrl in weiboHtmlUrls: wbrpurl = list(weiboHtmlUrl.links)[0] wbrpurlText = weiboHtmlUrl.text # 把鏈接放到字典中 weiboHtmlUrlDict[wbrpurlText] = wbrpurl # markdown格式將鏈接文本進行替換 urlNames = weiboHtmlUrlDict.keys() for urlName in urlNames: if urlName in weiboContent: weiboContent = weiboContent.replace(urlName, '[' + urlName + ']' + '(' + weiboHtmlUrlDict[urlName] + ')') else: weiboContent = weiboContent + '[' + urlName + ']' + '(' + weiboHtmlUrlDict[urlName] + ')' # 微博所有圖片,形成一個list列表 if wb_list15.find("div[class='weibo-og']")[0].find("div[class='m-img-box m-imghold-square']") != []: weiboHtmlPicList = wb_list15.find("div[class='weibo-og']")[0].find( "div[class='m-img-box m-imghold-square']") weiboHtmlPicUrlList = [] for weiboHtmlPic in weiboHtmlPicList: weiboHtmlPicUrl = list(weiboHtmlPic.find('a')[0].links)[0] weiboHtmlPicUrlList.append(weiboHtmlPicUrl) # markdown格式把圖片也加進去 for wbHtmlPicUrl in weiboHtmlPicUrlList: weiboContent = weiboContent + '![' + '微博大圖' + ']' + '(' + wbHtmlPicUrl + ')' # 轉發(fā)微博里同樣的操作 if len(wb_list15.find("div[class='weibo-text']")) > 1: weiboRpHtmlText = wb_list15.find("div[class='weibo-text']")[1].text # 轉發(fā)微博所有網(wǎng)址和鏈接文字,形成一個字典 if wb_list15.find("div[class='weibo-text']")[1].find('a') != []: weiboRpHtmlUrls = wb_list15.find("div[class='weibo-text']")[1].find('a') weiboRpHtmlUrlDict = {} for weiboRpHtmlUrl in weiboRpHtmlUrls: wbrpurl = list(weiboRpHtmlUrl.links)[0] wbrpurlText = weiboRpHtmlUrl.text weiboRpHtmlUrlDict[wbrpurlText] = wbrpurl RpurlNames = weiboRpHtmlUrlDict.keys() for RpurlName in RpurlNames: if RpurlName in weiboRpHtmlText: # 先把weiboRpHtmlText替換掉網(wǎng)址和圖片,再和weiboContent合并 weiboRpHtmlText = weiboRpHtmlText.replace(RpurlName, '[' + RpurlName + ']' + '(' + weiboRpHtmlUrlDict[ RpurlName] + ')') else: # 查找不到也沒關系,直接附在后面 weiboRpHtmlText = weiboRpHtmlText + '[' + RpurlName + ']' + '(' + weiboRpHtmlUrlDict[ urlName] + ')' # 轉發(fā)微博所有圖片,形成一個list列表 if wb_list15.find("div[class='m-img-box m-imghold-square']") != []: weiboRpHtmlPicList = wb_list15.find("div[class='m-img-box m-imghold-square']") weiboRpHtmlPicUrlList = [] for weiboRpHtmlPic in weiboRpHtmlPicList: weiboRpHtmlPicUrl = list(weiboRpHtmlPic.find('a')[0].links)[0] weiboRpHtmlPicUrlList.append(weiboRpHtmlPicUrl) for wbRpHtmlPicUrl in weiboRpHtmlPicUrlList: weiboRpHtmlText = weiboRpHtmlText + '![' + '微博大圖' + ']' + '(' + wbRpHtmlPicUrl + ')' # 合并了 weiboContent = weiboContent + '/n/n' + '> ' + weiboRpHtmlText # 加點來源和日期 weiboContent = weiboContent + '/n/n' + ' *** ' + '/n/n' + '**' + weiboOgTime_str + ',' + weiboOgFrom + '**/n/n' # 進去吧您~ DayOneImport(weiboOgTime_str, weiboContent) # 微博很多的打印下進度,實時掌握情況 speed = wb_num / len(wb_list) speed = round(speed, 2) * 100 os.system("cls") print('正在保存第' + str(wb_page) + '頁', '當前進度為:', speed, '%/n/n---------------/n') sys.stdout.flush() wb_num = wb_num + 1 wb_page = wb_page + 1 ##這個可以打印成md格式的文件,需要的可以試試 # f=open('temp.md','a',encoding='utf-8-sig') # print(weiboContent,file=f) # f.close()運行,微博多的需要等待一段時間。出現(xiàn)“Process finished with exit code 0”后,將AllEntries.json文件重新放入到之前的壓縮包文件夾中并打包成zip格式。

四、新Json導入到DayOne

將Json壓縮包傳入手機,接著打開DayOne,依次點擊settings——IMport/Export——Import Day One JSON(.zip),找到壓縮包文件夾,導入,微博多的需要一段時間。





注意:

評論(octoman無法抓?。?、天氣、位置,還無法獲取。

位置默認在湖南省杭州市芙蓉區(qū)芙蓉社區(qū),可以在以下代碼中自行修改:

'location': {'address': '芙蓉社區(qū), 芙蓉區(qū), 杭州, 湖南', 'administrativeArea': '湖南', 'country': 'China', 'latitude': 28.191735133055555, 'localityName': '杭州', 'longitude': 113.0060535813889, 'placeName': '芙蓉社區(qū)', 'region': {'center': {'latitude': 28.191735133055555, 'longitude': 113.0060535813889}}}, 其中

修改好后替換到代碼內就行了。

關鍵詞:實現(xiàn)

74
73
25
news

版權所有? 億企邦 1997-2025 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉