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

python使用aiohttp通過設(shè)置代理爬取基金數(shù)據(jù)簡(jiǎn)單示例

 更新時(shí)間:2023年06月26日 09:54:32   作者:小白學(xué)大數(shù)據(jù)  
這篇文章主要為大家介紹了python使用aiohttp通過設(shè)置代理爬取基金數(shù)據(jù)簡(jiǎn)單示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

python爬蟲

說到python爬蟲,我們就會(huì)想到它那強(qiáng)大的庫,很多新手小白在選擇框架的時(shí)候都會(huì)想到使用Scrapy,但是僅僅停留在會(huì)使用的階段。在實(shí)際爬蟲過程中遇到反爬機(jī)制是再常見不過的,今天為了增加對(duì)爬蟲機(jī)制的理解,我們就通過手動(dòng)實(shí)現(xiàn)多線程的爬蟲過程,同時(shí)引入IP代理池進(jìn)行基本的反爬操作。

這里我們就以天天基金數(shù)據(jù)為實(shí)際項(xiàng)目,該網(wǎng)站具有反爬機(jī)制,同時(shí)數(shù)量足夠大,多線程效果較為明顯。所以這里需要使用的到的技術(shù)路線有

  • IP代理池
  • 多線程
  • 爬蟲與反爬

通過基礎(chǔ)的分析天天基金網(wǎng)的一些數(shù)據(jù)。經(jīng)過抓包分析,可知:./fundcode_search.js包含所有基金的數(shù)據(jù),同時(shí),該地址具有反爬機(jī)制,多次訪問將會(huì)失敗甚至封IP的情況。分析完天天基金網(wǎng)的數(shù)據(jù)后,我們選擇使用搭建IP代理池,用于反爬作用。代理池直接通過代理廠家提供就可以,有太多的代理很多同學(xué)不知道怎么選擇,經(jīng)過多年爬蟲經(jīng)驗(yàn)和使用代理的經(jīng)驗(yàn)這里推薦億牛云代理,長(zhǎng)期使用不管是代理質(zhì)量還是售后服務(wù)都是優(yōu)于其他代理長(zhǎng)家的。

搭建完IP代理池后,我們開始著手多線程爬取數(shù)據(jù)的工作。一旦使用多線程,就需要考慮到一些爬取中會(huì)出現(xiàn)的問題。

python使用aiohttp通過設(shè)置代理IP獲取數(shù)據(jù)過程

import asyncio
import aiohttp
from aiohttp_socks import ProxyConnector
from bs4 import BeautifulSoup
# 定義目標(biāo)網(wǎng)站和代理服務(wù)器的參數(shù)
url = "http://fund.eastmoney.com/fund.html#os_0;isall_0;ft_;pt_1"
proxy = "socks5://16yun:16ip@www.16yun.cn:11111"
# 定義異步函數(shù)來發(fā)送GET請(qǐng)求,并使用代理服務(wù)器來連接目標(biāo)網(wǎng)站
async def fetch(session, url):
    try:
        async with session.get(url) as response:
            # 檢查響應(yīng)狀態(tài)碼是否為200,否則拋出異常
            if response.status != 200:
                raise Exception(f"Bad status code: {response.status}")
            # 返回響應(yīng)內(nèi)容的文本格式
            return await response.text()
    except Exception as e:
        # 打印異常信息,并返回None
        print(e)
        return None
# 定義異步函數(shù)來處理響應(yīng)結(jié)果,并解析HTML內(nèi)容
async def parse(html):
    # 如果響應(yīng)結(jié)果不為空,則進(jìn)行解析操作
    if html is not None:
        # 使用bs4庫來創(chuàng)建BeautifulSoup對(duì)象,并指定解析器為html.parser
        soup = BeautifulSoup(html, "html.parser")
        # 提取網(wǎng)頁中的標(biāo)題標(biāo)簽,并打印其文本內(nèi)容
        title = soup.find("title")
        print(title.text)
    else:
        # 否則打印None表示無效結(jié)果
        print(None)
# 定義異步函數(shù)來統(tǒng)計(jì)成功次數(shù),并打印結(jié)果
async def count(results):
    # 初始化成功次數(shù)為0
    success = 0
    # 遍歷所有的結(jié)果,如果不為空,則增加成功次數(shù),否則跳過
    for result in results:
        if result is not None:
            success += 1
    # 打印總共的請(qǐng)求數(shù)和成功次數(shù)    
    print(f"Total requests: {len(results)}")
    print(f"Success requests: {success}")
# 定義異步主函數(shù)來創(chuàng)建并運(yùn)行多個(gè)協(xié)程任務(wù),并控制并發(fā)數(shù)量和超時(shí)時(shí)間等參數(shù)    
async def main():
    # 創(chuàng)建一個(gè)aiohttp_socks.ProxyConnector對(duì)象,用來設(shè)置代理服務(wù)器的參數(shù)    
    connector = ProxyConnector.from_url(proxy)
    # 創(chuàng)建一個(gè)aiohttp.ClientSession對(duì)象,用來發(fā)送HTTP請(qǐng)求,并傳入connector參數(shù)    
    async with aiohttp.ClientSession(connector=connector) as session:
        # 創(chuàng)建一個(gè)空列表,用來存儲(chǔ)所有的協(xié)程任務(wù)        
        tasks = []
        # 循環(huán)10000次,每次創(chuàng)建一個(gè)fetch函數(shù)的協(xié)程任務(wù),并添加到列表中        
        for i in range(10000):
            task = asyncio.create_task(fetch(session, url))
            tasks.append(task)
        # 使用asyncio.gather函數(shù)來收集并執(zhí)行所有的協(xié)程任務(wù),并返回一個(gè)包含所有結(jié)果的列表        
        results = await asyncio.gather(*tasks)
        # 創(chuàng)建一個(gè)空列表,用來存儲(chǔ)所有的解析任務(wù)        
        parse_tasks = []
         for result in results:
             parse_task = asyncio.create_task(parse(result))
             parse_tasks.append(parse_task)
         await asyncio.gather(*parse_tasks)   
         await count(results)
# 在程序入口處調(diào)用異步主函數(shù),并啟動(dòng)事件循環(huán)         
if __name__ == "__main__":
     asyncio.run(main())

以上就是python使用aiohttp通過設(shè)置代理爬取基金數(shù)據(jù)簡(jiǎn)單示例的詳細(xì)內(nèi)容,更多關(guān)于python aiohttp爬取基金數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python+flask編寫一個(gè)簡(jiǎn)單實(shí)用的自動(dòng)排班系統(tǒng)

    Python+flask編寫一個(gè)簡(jiǎn)單實(shí)用的自動(dòng)排班系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了如何基于Python+flask編寫一個(gè)簡(jiǎn)單實(shí)用的自動(dòng)排班系統(tǒng),文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下
    2025-03-03
  • Pycharm技巧之代碼跳轉(zhuǎn)該如何回退

    Pycharm技巧之代碼跳轉(zhuǎn)該如何回退

    用Pycharm寫Python代碼有一段時(shí)間了,最近發(fā)現(xiàn)了一個(gè)Pycharm的一個(gè)小技巧想分享給大家,下面這篇文章主要給大家介紹了關(guān)于Pycharm代碼跳轉(zhuǎn)該如何回退的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • Python結(jié)合FFmpeg實(shí)現(xiàn)批量提取視頻音頻

    Python結(jié)合FFmpeg實(shí)現(xiàn)批量提取視頻音頻

    在日常開發(fā)或音頻處理場(chǎng)景中,我們經(jīng)常需要從大量視頻文件中批量提取音頻,本文介紹一種 使用 Python 調(diào)用 FFmpeg 的通用方案,同時(shí)支持 Windows、macOS 和 Linux,有需要的小伙伴可以了解下
    2026-01-01
  • Python協(xié)程asyncio模塊的演變及高級(jí)用法

    Python協(xié)程asyncio模塊的演變及高級(jí)用法

    網(wǎng)上很多關(guān)于Python協(xié)程asyncio模塊的教程都是基于老版Python的, 本文將以對(duì)比方式展示新老Python版本下協(xié)程的寫法有什么不同并總結(jié)了asyncio的一些高級(jí)用法, 包括如何獲取協(xié)程任務(wù)執(zhí)行結(jié)果,gather和wait方法的區(qū)別以及如何給任務(wù)添加回調(diào)函數(shù)。
    2021-05-05
  • Python中的作用域==和is的區(qū)別及說明

    Python中的作用域==和is的區(qū)別及說明

    這篇文章主要介紹了Python中的作用域==和is的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法

    pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法

    下面小編就為大家分享一篇pandas數(shù)據(jù)預(yù)處理之dataframe的groupby操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python的joblib模型固化函數(shù)解析

    Python的joblib模型固化函數(shù)解析

    這篇文章主要介紹了Python的joblib模型固化函數(shù)解析,joblib提供了三個(gè)與對(duì)象序列化和模型固化相關(guān)的函數(shù)hash,dump,load,joblib.hash主要是為了提供一個(gè)numpy對(duì)象的hash方法,需要的朋友可以參考下
    2023-08-08
  • python3使用pyqt5制作一個(gè)超簡(jiǎn)單瀏覽器的實(shí)例

    python3使用pyqt5制作一個(gè)超簡(jiǎn)單瀏覽器的實(shí)例

    下面小編就為大家?guī)硪黄猵ython3使用pyqt5制作一個(gè)超簡(jiǎn)單瀏覽器的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • CodeWhisperer基于python使用經(jīng)驗(yàn)分享

    CodeWhisperer基于python使用經(jīng)驗(yàn)分享

    這篇文章主要為大家介紹了CodeWhisperer基于python使用經(jīng)驗(yàn)分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Python基礎(chǔ)學(xué)習(xí)之基本數(shù)據(jù)結(jié)構(gòu)詳解【數(shù)字、字符串、列表、元組、集合、字典】

    Python基礎(chǔ)學(xué)習(xí)之基本數(shù)據(jù)結(jié)構(gòu)詳解【數(shù)字、字符串、列表、元組、集合、字典】

    這篇文章主要介紹了Python基礎(chǔ)學(xué)習(xí)之基本數(shù)據(jù)結(jié)構(gòu),結(jié)合實(shí)例形式分析了Python數(shù)字、字符串、列表、元組、集合、字典等基本數(shù)據(jù)類型功能、原理及相關(guān)使用技巧,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

广平县| 辽源市| 烟台市| 娱乐| 正镶白旗| 云安县| 修文县| 延川县| 阿城市| 平原县| 孙吴县| 平陆县| 兰坪| 富蕴县| 奉贤区| 永和县| 南投县| 奇台县| 大同市| 兰坪| 慈利县| 汶上县| 龙海市| 柳林县| 镇远县| 沅江市| 抚顺县| 华亭县| 松潘县| 涡阳县| 南投市| 雅江县| 巴彦淖尔市| 曲阜市| 介休市| 咸宁市| 杭锦后旗| 乌拉特前旗| 彩票| 长泰县| 商丘市|