最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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異步爬取一部小說(shuō)

思路

里面涉及到異步文件的讀寫(xiě)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)容寫(xiě)入文件
                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使用JSON庫(kù)解析JSON數(shù)據(jù)的方法

    Python使用JSON庫(kù)解析JSON數(shù)據(jù)的方法

    這篇文章主要介紹了Python使用JSON庫(kù)解析JSON數(shù)據(jù),主要包括如何在網(wǎng)頁(yè)中獲取json數(shù)據(jù)及python內(nèi)置的json庫(kù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • python 帶時(shí)區(qū)的日期格式化操作

    python 帶時(shí)區(qū)的日期格式化操作

    這篇文章主要介紹了python 帶時(shí)區(qū)的日期格式化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • Python中MySQL監(jiān)控與日志配置實(shí)戰(zhàn)指南

    Python中MySQL監(jiān)控與日志配置實(shí)戰(zhàn)指南

    這篇文章主要為大家詳細(xì)介紹了Python中MySQL監(jiān)控與日志配置的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-12-12
  • Python udp網(wǎng)絡(luò)程序?qū)崿F(xiàn)發(fā)送、接收數(shù)據(jù)功能示例

    Python udp網(wǎng)絡(luò)程序?qū)崿F(xiàn)發(fā)送、接收數(shù)據(jù)功能示例

    這篇文章主要介紹了Python udp網(wǎng)絡(luò)程序?qū)崿F(xiàn)發(fā)送、接收數(shù)據(jù)功能,結(jié)合實(shí)例形式分析了Python使用socket模塊進(jìn)行udp套接字創(chuàng)建、數(shù)據(jù)收發(fā)等相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • 淺談numpy 函數(shù)里面的axis參數(shù)的含義

    淺談numpy 函數(shù)里面的axis參數(shù)的含義

    這篇文章主要介紹了numpy 函數(shù)里面的axis參數(shù)的含義,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • Python?Selenium如何切換瀏覽器的頁(yè)面

    Python?Selenium如何切換瀏覽器的頁(yè)面

    這篇文章主要介紹了Python?Selenium如何切換瀏覽器的頁(yè)面的相關(guān)資料,在使用Selenium進(jìn)行網(wǎng)頁(yè)測(cè)試時(shí),跳轉(zhuǎn)頁(yè)面后常會(huì)出現(xiàn)無(wú)法定位元素的問(wèn)題,解決這一問(wèn)題的關(guān)鍵是學(xué)會(huì)在多個(gè)瀏覽器標(biāo)簽頁(yè)或窗口間切換,需要的朋友可以參考下
    2024-10-10
  • 淺談python輸出列表元素的所有排列形式

    淺談python輸出列表元素的所有排列形式

    今天小編就為大家分享一篇淺談python輸出列表元素的所有排列形式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python Django連接MySQL數(shù)據(jù)庫(kù)做增刪改查

    python Django連接MySQL數(shù)據(jù)庫(kù)做增刪改查

    本文寫(xiě)的是python Django連接MySQL數(shù)據(jù)庫(kù)的步驟,提供增刪改查的代碼
    2013-11-11
  • Python裝飾器超詳細(xì)實(shí)例教程

    Python裝飾器超詳細(xì)實(shí)例教程

    本文介紹了Python裝飾器的基本概念、用途和實(shí)現(xiàn)方法,裝飾器是一種在不修改原函數(shù)代碼的前提下,為函數(shù)動(dòng)態(tài)添加功能的工具,其本質(zhì)是閉包和高階函數(shù),裝飾器可用于日志記錄、計(jì)時(shí)、權(quán)限校驗(yàn)等功能,感興趣的朋友跟隨小編一起看看吧
    2026-05-05
  • 為了順利買(mǎi)到演唱會(huì)的票用Python制作了自動(dòng)搶票的腳本

    為了順利買(mǎi)到演唱會(huì)的票用Python制作了自動(dòng)搶票的腳本

    大麥網(wǎng),是中國(guó)綜合類(lèi)現(xiàn)場(chǎng)娛樂(lè)票務(wù)營(yíng)銷(xiāo)平臺(tái),業(yè)務(wù)覆蓋演唱會(huì)、 話(huà)劇、音樂(lè)劇、體育賽事等領(lǐng)域。但是因?yàn)槠睌?shù)有限,還有黃牛們不能丟了飯碗,所以導(dǎo)致了,很多人都搶不到票,那么,今天帶大家用Python來(lái)制作一個(gè)自動(dòng)搶票的腳本小程序
    2021-10-10

最新評(píng)論

彰化市| 周至县| 囊谦县| 蚌埠市| 南木林县| 许昌市| 仪陇县| 毕节市| 卫辉市| 丹江口市| 舞阳县| 文安县| 扶风县| 桦甸市| 平乡县| 澎湖县| 南皮县| 朝阳市| 浑源县| 泸水县| 鹤壁市| 桃江县| 轮台县| 岑溪市| 丹东市| 东乡县| 山东| 义乌市| 凤台县| 托克逊县| 淳安县| 榆中县| 南投县| 阿图什市| 太和县| 临泽县| 太仆寺旗| 琼结县| 乌苏市| 贵州省| 桑日县|