找到了相关网页和api就简单的写个爬虫就行了,分享给需要的朋友。
需要requests库。
一些细节方面请自己处理,如开始的年月和结束的年份,相关注释已经给出。
import requests
import os
#prepare for login
#email = '2xxxxx@qq.com'#在这里输入邮箱
#ps='1234567'#在这里输入密码
email=input("输入邮箱:")
ps=input("输入密码:")
data={
'csrfmiddlewaretoken': 'lKsJooKKQjQurVwSZUqDho90nH1NvONx',
'email' : email,
'password' : ps
}
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36',
}
#get token
r = requests.post('https://nideriji.cn/api/login/',headers=headers,data=data)
headers['auth'] = 'token '+r.json()['token']
#get different diary
#1 获得每天对应编号
#2 获得日记
def write_diary2txt(id='29581504'):
r=requests.get('https://nideriji.cn/api/diary/'+id,headers=headers)
diary=r.json()['diary']
time = diary['ts'].split()[0]
weekday = diary['weekday']
#print(time,weekday)
with open(time+'.txt','w',encoding='utf-8') as f:
f.write(time+' '+weekday+'\n')
f.write(diary['title']+'\n')
f.write(diary['content'])
#download_diary()
def get_days_id(year=2023,month=3):
r=requests.get('https://nideriji.cn/api/diary/simple_by_month/'+str(year)+'/'+str(month)+'/',headers=headers)
id_dict = r.json()['diaries']
return id_dict
#print(id_dict)
def download_diary_by_month(year=2023,month=3):
pwd = os.getcwd()
dirname = str(year)+'-'+str(month)
try:
os.mkdir(dirname)
except:
pass
os.chdir(dirname)
id_dict=get_days_id(year,month)
for i in id_dict:
write_diary2txt(str(id_dict[i]))
os.chdir(pwd)
#开始的年月
year=2023
month=3
while year>2019:#结束的年份
pwd = os.getcwd()
try:
download_diary_by_month(year,month)
except:
pass
os.chdir(pwd)
month=month-1
if month==0:
month=12
year-=1