异步实战项目

"""
同步操作:访问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+'"}'#转译
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值