""" 同步操作:访问getCatalog,拿到所有的章节名称和内容 异步操作:访问getChapterContent 下载所有的文章内容 """ # url =' https://dushu.baidu.com/api/pc/getCatalog?data={"book_id":"4315646974"}'#所有章节的名称,id #url1 =小说章节里面的内容 import requests import asyncio import aiohttp import json import aiofiles async def aiodownload(cid,b_id,title): data ={"book_id":b_id, "cid":f"{b_id}|{cid}", "need_bookinfo":1 } data = json.dumps(data) url =f"https://dushu.baidu.com/api/pc/getCatalog?data={data}" async with aiohttp.ClientSession()as session:#准备好session async with session.get(url)as resp:#session的发送请求 dic =await resp.json()#得到json async with aiofiles.open(title,'w',encoding='utf-8')as f:#创建异步文件 await f.write(dic['data']['novel']['content'])#把小说内容写出 def getCatalog(url): resp = requests.get(url) dic = resp.json() task = [] for item in dic['data']['novel']['items']: #item就是对应每一个章节的名称和cid title =item['title'] cid = item['cid'] #准备异步任务 task.append(aiodownload(cid,b_id,title)) asyncio.run(asyncio.wait(task)) #await asyncio.wait(task) if __name__ == '__main__': b_id ="4315646974" url =' https://dushu.baidu.com/api/pc/getCatalog?data={"book_id":"' +b_id+'"}'#转译
异步实战项目
最新推荐文章于 2024-07-11 18:01:45 发布