亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python協(xié)程異步爬取數(shù)據(jù)(asyncio+aiohttp)實(shí)例

 更新時(shí)間:2023年08月21日 09:37:55   作者:YiYa_咿呀  
這篇文章主要為大家介紹了Python協(xié)程異步爬取數(shù)據(jù)(asyncio+aiohttp)實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

使用asyncio+aiohttp異步爬取一部小說

思路

里面涉及到異步文件的讀寫aiofiles,同時(shí)在發(fā)送請(qǐng)求時(shí)涉及到將字典轉(zhuǎn)化為字符串,接受響應(yīng)時(shí)將字符串轉(zhuǎn)化為字典,故這個(gè)里面涉及到json庫(kù),同時(shí)在請(qǐng)求下載鏈接的cidtitle時(shí)使用的是同步獲取一條請(qǐng)求的響應(yīng),故其為同步操作,使用requests庫(kù)

代碼

import requests
import aiohttp
import asyncio
import json
import aiofiles
# url = 'http://dushu.baidu.com/api/pc/getCatalog?data={%22book_id%22:%224306063500%22}'
# bookid = 'http://dushu.baidu.com/api/pc/getChapterContent?data={%22book_id%22:%224306063500%22,%22cid%22:%224306063500|1569782244%22,%22need_bookinfo%22:1'
async def downloadNovel(cid,title,bid):
    data2 = {
        "book_id": bid,
        "cid": f"{bid}|{cid}",
        "need_bookinfo": 1
    }
    # 將字典轉(zhuǎn)化為字符串
    data2 = json.dumps(data2)
    # 創(chuàng)建請(qǐng)求鏈接
    bookurl = f'http://dushu.baidu.com/api/pc/getChapterContent?data={data2}'
    # 這里老是忘記打括號(hào) aiohttp.ClientSession()
    async with aiohttp.ClientSession() as session:
        async with session.get(bookurl) as resp:
            # 等待結(jié)果返回
            dic = await resp.json()
            # 設(shè)置編碼格式encoding='utf-8'
            async with aiofiles.open(f'./articles/{title}',mode = 'w',encoding='utf-8') as f:
                # 異步將內(nèi)容寫入文件
                await f.write(dic['data']['novel']['content'])
async def getCataList(url):
    # 同步爬取所有的章節(jié)相關(guān)信息
    resp = requests.get(url)
    # 將返回的字符轉(zhuǎn)化為字典形式
    dic = resp.json()
    # print(dic)
    # 創(chuàng)建一個(gè)空對(duì)象用于存儲(chǔ)異步任務(wù)
    tasks = []
    # 循環(huán)創(chuàng)建異步任務(wù)并且添加至tasks中
    for item in dic['data']['novel']['items']:
        title = item['title']
        cid = item['cid']
        tasks.append(asyncio.create_task(downloadNovel(cid,title,bid)))
        print(title,cid)
        # 執(zhí)行異步任務(wù)
    await asyncio.wait(tasks)
if __name__ == '__main__':
    bid = "4306063500"
    url = 'http://dushu.baidu.com/api/pc/getCatalog?data={"book_id":"' + bid + '"}'
    print(url)
    asyncio.run(getCataList(url))

效果如下

數(shù)據(jù)爬取成功

以上就是Python協(xié)程異步爬取數(shù)據(jù)(asyncio+aiohttp)實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于Python協(xié)程異步爬取數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 理解Python中函數(shù)的參數(shù)

    理解Python中函數(shù)的參數(shù)

    這篇文章主要介紹了Python中函數(shù)的參數(shù),掌握函數(shù)中的參數(shù)傳遞在任何一門語(yǔ)言的學(xué)習(xí)過程當(dāng)中都是基本功,需要的朋友可以參考下
    2015-04-04
  • python三引號(hào)輸出方法

    python三引號(hào)輸出方法

    在本文里我們給大家分析那個(gè)了關(guān)于python三引號(hào)輸出方法以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • 分析Python感知線程狀態(tài)的解決方案之Event與信號(hào)量

    分析Python感知線程狀態(tài)的解決方案之Event與信號(hào)量

    本文主要介紹了如何感知線程狀態(tài)、如何停止一個(gè)線程、線程之間的Event用法
    2021-06-06
  • Pandas替換NaN值的方法實(shí)現(xiàn)

    Pandas替換NaN值的方法實(shí)現(xiàn)

    本文主要介紹了Pandas替換NaN值的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 淺談Python使用pickle模塊序列化數(shù)據(jù)優(yōu)化代碼的方法

    淺談Python使用pickle模塊序列化數(shù)據(jù)優(yōu)化代碼的方法

    這篇文章主要介紹了淺談Python使用pickle模塊序列化數(shù)據(jù)優(yōu)化代碼的方法,pickle模塊可以對(duì)多種Python對(duì)象進(jìn)行序列化和反序列化,序列化稱為pickling,反序列化稱為unpickling,需要的朋友可以參考下
    2023-07-07
  • Python的SQLalchemy模塊連接與操作MySQL的基礎(chǔ)示例

    Python的SQLalchemy模塊連接與操作MySQL的基礎(chǔ)示例

    SQLalchemy是Python世界中驅(qū)動(dòng)MySQL的一款高人氣模塊,這里我們從入門開始來看一下Python的SQLalchemy模塊連接與操作MySQL的基礎(chǔ)示例:
    2016-07-07
  • python實(shí)現(xiàn)數(shù)據(jù)圖表

    python實(shí)現(xiàn)數(shù)據(jù)圖表

    plotly是現(xiàn)代平臺(tái)的敏捷商業(yè)智能和數(shù)據(jù)科學(xué)庫(kù),它作為一款開源的繪圖庫(kù),可以應(yīng)用于Python、R、MATLAB、Excel、JavaScript和jupyter等多種語(yǔ)言,主要使用的js進(jìn)行圖形繪制,實(shí)現(xiàn)過程中主要就是調(diào)用plotly的函數(shù)接口,底層實(shí)現(xiàn)完全被隱藏,便于初學(xué)者的掌握。
    2017-07-07
  • Python中Json使用示例詳解

    Python中Json使用示例詳解

    這篇文章主要介紹了Python中Json使用,主要介紹一下python?中?json的使用?如何把dict轉(zhuǎn)成json?、object?轉(zhuǎn)成json?、以及json轉(zhuǎn)成對(duì)象,需要的朋友可以參考下
    2022-07-07
  • 淺析Python requests 模塊

    淺析Python requests 模塊

    這篇文章主要介紹了Python requests 模塊的相關(guān)資料,幫助大家利用requests 模塊進(jìn)行爬蟲,感興趣的朋友可以了解下
    2020-10-10
  • Python中迭代器的創(chuàng)建與使用詳解

    Python中迭代器的創(chuàng)建與使用詳解

    Python中的迭代器是一個(gè)對(duì)象,用于迭代可迭代對(duì)象,如列表,元組,字典和集合,這篇文章主要為大家介紹了Python中迭代器的創(chuàng)建與使用,需要的可以參考下
    2023-08-08

最新評(píng)論