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

python爬蟲(chóng)通過(guò)增加多線(xiàn)程獲取數(shù)據(jù)

 更新時(shí)間:2023年06月26日 10:39:22   作者:小白學(xué)大數(shù)據(jù)  
這篇文章主要為大家介紹了python爬蟲(chóng)通過(guò)增加多線(xiàn)程獲取數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

python爬蟲(chóng)離不開(kāi)代理ip 

Python爬蟲(chóng)應(yīng)用領(lǐng)域廣泛,并且在數(shù)據(jù)爬取領(lǐng)域處于霸主位置,并且擁有很多性能好的框架,像Scrapy、Request、BeautifuSoap、urlib等框架可以實(shí)現(xiàn)爬行自如的功能,只要有能爬取的數(shù)據(jù),Python爬蟲(chóng)均可實(shí)現(xiàn)。數(shù)據(jù)信息采集離不開(kāi)Python爬蟲(chóng),而python爬蟲(chóng)離不開(kāi)代理ip,他們的結(jié)合可以做的事情很多,如廣告營(yíng)銷(xiāo)、各種數(shù)據(jù)采集大數(shù)據(jù)分析,人工智能等,特別是在數(shù)據(jù)的抓取方面可以產(chǎn)生的作用巨大。

既然爬蟲(chóng)代理ip是python網(wǎng)絡(luò)爬蟲(chóng)不可缺少的部分,那高質(zhì)量的,ip資源豐富遍布全國(guó)的,高匿極速穩(wěn)定http代理,非常適合python網(wǎng)絡(luò)爬蟲(chóng)運(yùn)用場(chǎng)景。

增加多線(xiàn)程處理案例

比如在有優(yōu)質(zhì)代理IP的前提下使用python實(shí)現(xiàn)百度網(wǎng)頁(yè)采集,增加多線(xiàn)程處理,同時(shí)對(duì)百度返回的內(nèi)容進(jìn)行分類(lèi)統(tǒng)計(jì),實(shí)現(xiàn)代碼如下:

import aiohttp
import threading
from collections import Counter
# 定義一個(gè)全局變量,用于存儲(chǔ)分類(lèi)結(jié)果
categories = Counter()
# 定義一個(gè)函數(shù),用于根據(jù)文本內(nèi)容進(jìn)行分類(lèi)
def classify(text):
    # 這里可以使用任何文本分類(lèi)的方法,例如正則表達(dá)式、機(jī)器學(xué)習(xí)等
    # 這里為了簡(jiǎn)單起見(jiàn),只使用了簡(jiǎn)單的字符串匹配
    if "Python" in text:
        return "Python"
    elif "Java" in text:
        return "Java"
    elif "C++" in text:
        return "C++"
    else:
        return "Other"
async def fetch_page(url, proxy):
    # 創(chuàng)建一個(gè) aiohttp 的 ClientSession 對(duì)象,并指定代理IP和端口
    async with aiohttp.ClientSession(proxy=proxy) as session:
        # 使用 session.get 方法發(fā)送請(qǐng)求,并獲取響應(yīng)對(duì)象
        async with session.get(url) as response:
            # 返回響應(yīng)的文本內(nèi)容
            return await response.text()
async def main():
    urls = ["https://www.baidu.com/s?wd=" + str(i) for i in range(10)] # 生成十個(gè)百度搜索網(wǎng)址
    # 假設(shè)有一個(gè)文件 16yun.txt,每行存儲(chǔ)一個(gè)代理host和端口,例如 www.16yun.cn:3333
    # 讀取文件中的所有代理,并存儲(chǔ)在一個(gè)列表中
    with open("16yun.txt") as f:
        proxies = [line.strip() for line in f]
    tasks = [] # 創(chuàng)建一個(gè)空列表,用于存儲(chǔ) task 對(duì)象
    # 遍歷 urls 和 proxies 列表,為每個(gè) url 配對(duì)一個(gè) proxy,并創(chuàng)建 task 對(duì)象
    for url, proxy in zip(urls, proxies):
        task = asyncio.create_task(fetch_page(url, proxy))
        tasks.append(task)
    results = await asyncio.gather(*tasks) # 同時(shí)運(yùn)行所有 task 并獲取結(jié)果
    # 創(chuàng)建一個(gè)線(xiàn)程池,用于執(zhí)行分類(lèi)任務(wù)
    pool = threading.ThreadPoolExecutor(max_workers=4)
    for result in results:
        print(result[:100]) # 打印每個(gè)網(wǎng)頁(yè)的前 100 個(gè)字符
        # 使用線(xiàn)程池提交一個(gè)分類(lèi)任務(wù),并更新全局變量 categories
        category = pool.submit(classify, result).result()
        categories[category] += 1
    # 關(guān)閉線(xiàn)程池并等待所有任務(wù)完成
    pool.shutdown(wait=True)
    # 打印最終的分類(lèi)結(jié)果
    print(categories)
asyncio.run(main()) # 運(yùn)行主協(xié)程

根據(jù)數(shù)據(jù)來(lái)分析下代理ip池要求

通過(guò)上面的代碼實(shí)現(xiàn)數(shù)據(jù)抓取后,我們也可以簡(jiǎn)單的根據(jù)數(shù)據(jù)來(lái)分析下代理ip池要求。

通過(guò)獲取的數(shù)據(jù)量,能夠大概了解需要訪(fǎng)問(wèn)多少網(wǎng)頁(yè),通過(guò)目標(biāo)網(wǎng)站的反爬策略,能大概知道需要多少代理ip,需要多大的代理ip池。假設(shè)要訪(fǎng)問(wèn)50萬(wàn)個(gè)頁(yè)面,每個(gè)ip能訪(fǎng)40個(gè)頁(yè)面后會(huì)觸發(fā)反爬機(jī)制,那大概需要1萬(wàn)左右不重復(fù)的代理ip。

這只是簡(jiǎn)單的一個(gè)計(jì)算,網(wǎng)站不同,反爬機(jī)制不同,對(duì)IP的需求是要以實(shí)際測(cè)試的數(shù)據(jù)為準(zhǔn)的。在我們使用代理ip時(shí),如何使爬蟲(chóng)更有效的進(jìn)行,在爬蟲(chóng)采集數(shù)據(jù)信息需要注意哪些地方,我們一起來(lái)分析如何更有效的采集到數(shù)據(jù)信息,提高工作效率,下一次分享給大家參考。

以上就是python爬蟲(chóng)增加多線(xiàn)程獲取數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于python爬蟲(chóng)多線(xiàn)程獲取數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中re.compile函數(shù)的使用方法

    Python中re.compile函數(shù)的使用方法

    這篇文章主要介紹在python的re模塊中怎樣應(yīng)用正則表達(dá)式,文中有相關(guān)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-06-06
  • 如何通過(guò)python的fabric包完成代碼上傳部署

    如何通過(guò)python的fabric包完成代碼上傳部署

    這篇文章主要介紹了如何通過(guò)python的fabric包完成代碼上傳部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python迭代器iterator生成器generator使用解析

    Python迭代器iterator生成器generator使用解析

    這篇文章主要介紹了Python迭代器iterator生成器generator使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python讀取Excel數(shù)據(jù)實(shí)現(xiàn)批量生成合同

    Python讀取Excel數(shù)據(jù)實(shí)現(xiàn)批量生成合同

    Python在自動(dòng)化辦公方面具有極大的優(yōu)勢(shì),可以解決我們工作中遇到的很多重復(fù)性問(wèn)題。本文將通過(guò)Python讀取Excel數(shù)據(jù)實(shí)現(xiàn)批量生成合同,需要的可以參考一下
    2022-05-05
  • pytorch實(shí)現(xiàn)線(xiàn)性回歸

    pytorch實(shí)現(xiàn)線(xiàn)性回歸

    這篇文章主要為大家詳細(xì)介紹了pytorch實(shí)現(xiàn)線(xiàn)性回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • python matplotlib繪圖實(shí)現(xiàn)刪除重復(fù)冗余圖例的操作

    python matplotlib繪圖實(shí)現(xiàn)刪除重復(fù)冗余圖例的操作

    這篇文章主要介紹了python matplotlib繪圖實(shí)現(xiàn)刪除重復(fù)冗余圖例的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • 一篇文章帶你了解Python和Java的正則表達(dá)式對(duì)比

    一篇文章帶你了解Python和Java的正則表達(dá)式對(duì)比

    正則表達(dá)式有元字符及不同組合來(lái)構(gòu)成,通過(guò)巧妙的構(gòu)造正則表達(dá)式可以匹配任意字符串,并完成復(fù)雜的字符串處理任務(wù),希望本片文章能給你帶來(lái)幫助
    2021-09-09
  • mac下pycharm設(shè)置python版本的圖文教程

    mac下pycharm設(shè)置python版本的圖文教程

    今天小編就為大家分享一篇mac下pycharm設(shè)置python版本的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python密碼學(xué)庫(kù)pynacl功能介紹

    python密碼學(xué)庫(kù)pynacl功能介紹

    PyNaCI能夠提供數(shù)字簽名、密鑰加密、公鑰加密、哈希和消息身份驗(yàn)證、基于密碼的密鑰派生和密碼散列功能,這篇文章主要介紹了python密碼學(xué)庫(kù)pynacl,感興趣的朋友一起看看吧
    2022-05-05
  • 基于PyQt5制作一個(gè)表情包下載器

    基于PyQt5制作一個(gè)表情包下載器

    每次和朋友聊天苦于沒(méi)有表情包,而別人的表情包似乎是取之不盡、用之不竭。作為一個(gè)程序員哪能甘愿認(rèn)輸,所以本文將用Python制作一個(gè)表情包下載器供大家斗圖,需要的可以參考一下
    2022-03-03

最新評(píng)論