Python代理IP的使用和代理池的設定
熟悉 python 的人都知道 為了 python 的正常請求,維持資料的穩定獲取, 都會用到代理 IP 。 代理 IP 不僅可以用 來規避 IP 在單位時間的請求次數 , 還可以 藉助代理來 隱藏真實的 IP , 避免 出現 “ IP 請求過於頻繁”,“ 403 ”等報錯。 今天就帶大家簡單瞭解一下 Python 代理 IP 的使用和代理池怎麼設定。
一、 什麼是代理
代理一般指的是代理伺服器 Proxy Server , 它的 作用就是代理網路使用者獲取資訊。就像是一個請求的中轉站,代理伺服器就是請求端與目標網站之間的一箇中轉 。 使用代理之後將不是直接請求目標網站, 使用者的 Request 訊號會先送到代理伺服器,由代理伺服器來取回所需要的資訊並傳送給 使用者 。此時的 被 請求 的 目標網站所識別的 IP 就不是 使用者真實的 本地 IP , 而是代理 IP 地址 。這就是代理的基本原理。
二、 代理的作用
1 、突破自身 IP 訪問限制訪問其他不能訪問的站點。
2 、訪問一些單位或團體 的 內部資源,比如教育網的 FTP 資源 。
3 、提高訪問速度。代理伺服器通常有一個較大的硬碟緩衝區,請求資訊透過後將會儲存在緩衝區內。如果其他的使用者訪問相同的資訊,這時返回的內容將從緩衝區直接返回,提高 訪問 速度 。
4 、隱藏真實 IP ,可以利用代理伺服器隱藏自己的 真實 IP 資訊 。
三、 Python requests 如何使用代理
python 的 requests 請求設定代理只需要傳遞一個引數: proxies 即可
import requests proxies = { 'http':' 'https':' } res = requests.get(") print(res.json())
返回內容如下
{ "ip": "203.160.80.166", "city": "Hong Kong", "region": "Central and Western", "country": "HK", "loc": "22.2783,114.1747", "org": "AS10099 China Unicom Global", "timezone": "Asia/Hong_Kong", "readme": " }
四、 代理池的設定
代理池就是將代理伺服器的 IP 儲存到臨時資料庫中,實現隨用隨取。既可以將免費的代理網站的 IP 及時存進去,也可以避免了收費代理 api 的請求限制。
1. 如何設計代理池
代理池一般分為三個部分:收集代理,儲存代理和使用代理, 從 收集到儲存或者是 從 儲存到使用 , 期間可以對使用的代理做檢測,本文暫不提及。
收集代理:就是指從指定的目標源獲取到代理伺服器的 IP 之後存到歷史資料庫 。
儲存代理:負責儲存從目標網站的代理伺服器 IP ,通常使用 redis 。
使用代理:直接從臨時資料庫獲取提取過來的 IP 或者以介面的形式返回 。
2. 收集和儲存代理
本次使用的是 redis 的列表( List )對代理進行儲存,當然對去重有要求的話可以使用 redis 的有序集合( sorted set )
在 redis 資料庫中建立一個叫做“ Proxy ”的 list ,將獲取到的 IP 進行儲存 :
import requests import redis redisHost = '127.0.0.1' redisPort = 6379 redisPool = redis.ConnectionPool(host=redisHost, port=redisPort, password='', db=1) redisCon = redis.Redis(connection_pool=redisPool) def get_IP(): IpApi = "url" res = requests.get(IpApi).json()["data"] for ip in res: ipInfo = f"http://{ip['ip']}:{ip['port']}" redisCon.rpush("Proxy",ipInfo) if __name__ == '__main__': get_IP()
這裡使用的是 ipidea 的代理 api ,將獲取的伺服器地址存入了 redis 的列表中:
3. 使用代理
使用代理的話就從 redis 的 Proxy 佇列,使用 redis 的 pop 方法取到伺服器 IP :
def GetIpFromRedis(): serverIp = redisCon.lpop("Proxy") print(serverIp.decode())
4. 可持續化代理池
為了保證代理池的 IP 量位置在某一水平,可以使用 redis 中的 llen 方法對佇列的長度進行檢測。使用 while 迴圈,如果 IP 量低於一定的閾值就獲取代理地址並儲存,否則就跳過本次 while 迴圈:
def get_IP(): while True: if redisCon.llen("Proxy") < 100: IpApi = "url" res = requests.get(IpApi).json()["data"] for ip in res: ipInfo = f"http://{ip['ip']}:{ip['port']}" redisCon.rpush("Proxy",ipInfo) else: pass
五、 總結
在網際網路不斷髮展,資訊資料龐大的今天, python 已經取代了過去傳統的依靠人力蒐集資訊的方式,成為了目前最為主流的資料獲取方法。使用代理 IP 並不是抓取資料的唯一方法,但它為 python 帶來了諸多好處,是 python 最可靠的選擇。
IPIDEA 作為 一家全球網際網路大資料IP 資源服務商。目前,已與全球數萬家企業達成深度合作,是世界 500 強公司都在使用的代理網路和資料收集工具。 IPIDEA 一直致力於連線人與資訊,為全球使用者提供優質的資料採集解決方案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017425/viewspace-2927620/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何用海外HTTP代理設定python爬蟲代理ip池?HTTPPython爬蟲
- Python 爬蟲IP代理池的實現Python爬蟲
- Python爬蟲技巧---設定代理IPPython爬蟲
- selenium+python設定爬蟲代理IP的方法Python爬蟲
- 爬蟲如何使用ip代理池爬蟲
- 代理Ip池構建及使用
- IPIDEA講述代理IP以及代理IP池的概念是什麼Idea
- Mac怎麼設定代理IP,蘋果系統設定http代理ip教程Mac蘋果HTTP
- Python requests設定代理的方法Python
- PHP中的代理IP池操作指南PHP
- 如何使用Linux設定命令列海外IP代理?Linux命令列
- 使用代理ip的原因
- Python代理IP爬蟲的簡單使用Python爬蟲
- 路由設定代理IP的三大作用路由
- 代理的設定
- 自建代理IP池的三大優勢
- 在Python中使用代理IP的方法詳解Python
- 代理ip的授權使用
- "什麼是海外代理IP池?共享IP池和獨享IP池有什麼不同?"
- 技術分享:Proxy-Pool代理池搭建IP代理
- Python怎麼設定代理Python
- 如何建立爬蟲代理ip池爬蟲
- 免費的ip代理穩定嗎
- 海外IP代理可以在手機上使用嗎?如何設定?
- python 爬蟲 代理池Python爬蟲
- 爬蟲代理IP的使用技巧爬蟲
- 隧道代理ip使用
- HTTP代理和SOCKS5代理IP的不同HTTP
- 在海外代理IP服務中,如何使用代理IP
- 手把手教你爬蟲代理ip池的建立爬蟲
- 代理IP怎樣保障Python穩定執行?Python
- 高匿IP代理與透明IP代理的區別
- 瞭解海外IP池:海外IP代理的關鍵組成部分
- python爬蟲實戰:爬取西刺代理的代理ip(二)Python爬蟲
- Java怎麼設定代理使用?Java
- 海外代理ip如何使用?
- 怎麼實現代理伺服器設定隧道代理IP的詳細步驟(程式碼)伺服器
- 代理ip池對爬蟲有多重要爬蟲