欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

python爬蟲

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

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

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

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

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

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

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ù)來(lái)發(fā)送GET請(qǐng)求,并使用代理服務(wù)器來(lái)連接目標(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ù)來(lái)處理響應(yīng)結(jié)果,并解析HTML內(nèi)容
async def parse(html):
    # 如果響應(yīng)結(jié)果不為空,則進(jìn)行解析操作
    if html is not None:
        # 使用bs4庫(kù)來(lái)創(chuàng)建BeautifulSoup對(duì)象,并指定解析器為html.parser
        soup = BeautifulSoup(html, "html.parser")
        # 提取網(wǎng)頁(yè)中的標(biāo)題標(biāo)簽,并打印其文本內(nèi)容
        title = soup.find("title")
        print(title.text)
    else:
        # 否則打印None表示無(wú)效結(jié)果
        print(None)
# 定義異步函數(shù)來(lái)統(tǒng)計(jì)成功次數(shù),并打印結(jié)果
async def count(results):
    # 初始化成功次數(shù)為0
    success = 0
    # 遍歷所有的結(jié)果,如果不為空,則增加成功次數(shù),否則跳過(guò)
    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ù)來(lái)創(chuàng)建并運(yùn)行多個(gè)協(xié)程任務(wù),并控制并發(fā)數(shù)量和超時(shí)時(shí)間等參數(shù)    
async def main():
    # 創(chuàng)建一個(gè)aiohttp_socks.ProxyConnector對(duì)象,用來(lái)設(shè)置代理服務(wù)器的參數(shù)    
    connector = ProxyConnector.from_url(proxy)
    # 創(chuàng)建一個(gè)aiohttp.ClientSession對(duì)象,用來(lái)發(fā)送HTTP請(qǐng)求,并傳入connector參數(shù)    
    async with aiohttp.ClientSession(connector=connector) as session:
        # 創(chuàng)建一個(gè)空列表,用來(lái)存儲(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ù)來(lái)收集并執(zhí)行所有的協(xié)程任務(wù),并返回一個(gè)包含所有結(jié)果的列表        
        results = await asyncio.gather(*tasks)
        # 創(chuàng)建一個(gè)空列表,用來(lái)存儲(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通過(guò)設(shè)置代理爬取基金數(shù)據(jù)簡(jiǎn)單示例的詳細(xì)內(nèi)容,更多關(guān)于python aiohttp爬取基金數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 分享15個(gè)最受歡迎的Python開源框架

    分享15個(gè)最受歡迎的Python開源框架

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

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

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

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

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

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

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

    淺析Python3 pip換源問(wèn)題

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

    詳解Python的連接符

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

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

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

    解決使用PyCharm時(shí)無(wú)法啟動(dòng)控制臺(tái)的問(wèn)題

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

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

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

    Python中reduce函數(shù)詳解

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

最新評(píng)論