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

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

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

python爬蟲

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

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

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

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

搭建完IP代理池后,我們開始著手多線程爬取數(shù)據(jù)的工作。一旦使用多線程,就需要考慮到一些爬取中會出現(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請求,并使用代理服務(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é)果不為空,則進行解析操作
    if html is not None:
        # 使用bs4庫來創(chuàng)建BeautifulSoup對象,并指定解析器為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)計成功次數(shù),并打印結(jié)果
async def count(results):
    # 初始化成功次數(shù)為0
    success = 0
    # 遍歷所有的結(jié)果,如果不為空,則增加成功次數(shù),否則跳過
    for result in results:
        if result is not None:
            success += 1
    # 打印總共的請求數(shù)和成功次數(shù)    
    print(f"Total requests: {len(results)}")
    print(f"Success requests: {success}")
# 定義異步主函數(shù)來創(chuàng)建并運行多個協(xié)程任務(wù),并控制并發(fā)數(shù)量和超時時間等參數(shù)    
async def main():
    # 創(chuàng)建一個aiohttp_socks.ProxyConnector對象,用來設(shè)置代理服務(wù)器的參數(shù)    
    connector = ProxyConnector.from_url(proxy)
    # 創(chuàng)建一個aiohttp.ClientSession對象,用來發(fā)送HTTP請求,并傳入connector參數(shù)    
    async with aiohttp.ClientSession(connector=connector) as session:
        # 創(chuàng)建一個空列表,用來存儲所有的協(xié)程任務(wù)        
        tasks = []
        # 循環(huán)10000次,每次創(chuàng)建一個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ù),并返回一個包含所有結(jié)果的列表        
        results = await asyncio.gather(*tasks)
        # 創(chuàng)建一個空列表,用來存儲所有的解析任務(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ù),并啟動事件循環(huán)         
if __name__ == "__main__":
     asyncio.run(main())

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

相關(guān)文章

  • 分享15個最受歡迎的Python開源框架

    分享15個最受歡迎的Python開源框架

    以下是從GitHub中整理出的15個最受歡迎的Python開源框架。這些框架包括事件I/O,OLAP,Web開發(fā),高性能網(wǎng)絡(luò)通信,測試,爬蟲等
    2014-07-07
  • python實現(xiàn)電腦操控安卓手機

    python實現(xiàn)電腦操控安卓手機

    網(wǎng)上雖然有很多教程,但是隨著版本的更新總有各種各樣的坑,本文以親身踏坑經(jīng)歷介紹了電腦使用python操控安卓手機,從安裝到使用方法,感興趣的可以了解一下
    2021-05-05
  • pytorch邏輯回歸實現(xiàn)步驟詳解

    pytorch邏輯回歸實現(xiàn)步驟詳解

    這篇文章主要為大家詳細(xì)介紹了Pytorch實現(xiàn)邏輯回歸分類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-10-10
  • Python?PaddleNLP開源實現(xiàn)快遞單信息抽取

    Python?PaddleNLP開源實現(xiàn)快遞單信息抽取

    這篇文章主要為大家介紹了Python?PaddleNLP開源項目實現(xiàn)對快遞單信息抽取,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 淺析Python3 pip換源問題

    淺析Python3 pip換源問題

    這篇文章主要介紹了Python3 pip換源問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • 詳解Python的連接符

    詳解Python的連接符

    這篇文章主要為大家介紹了Python的連接符,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • python利用faker庫批量生成測試數(shù)據(jù)

    python利用faker庫批量生成測試數(shù)據(jù)

    小編經(jīng)常需要批量測試一些數(shù)據(jù),有時候測試環(huán)境又暫時沒數(shù)據(jù),特意找了一下,發(fā)現(xiàn)有一個可批量生成數(shù)據(jù)的python庫—-faker,現(xiàn)在就介紹一下它的使用方法,如果你不想一行一行輸入代碼,小編提供了完整測試代碼,見文末代碼章節(jié)。
    2020-10-10
  • 解決使用PyCharm時無法啟動控制臺的問題

    解決使用PyCharm時無法啟動控制臺的問題

    今天小編就為大家分享一篇解決使用PyCharm時無法啟動控制臺的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • PYTHON發(fā)送郵件YAGMAIL的簡單實現(xiàn)解析

    PYTHON發(fā)送郵件YAGMAIL的簡單實現(xiàn)解析

    這篇文章主要介紹了PYTHON發(fā)送郵件YAGMAIL的簡單實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Python中reduce函數(shù)詳解

    Python中reduce函數(shù)詳解

    本文主要介紹了Python中reduce函數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論