如果您已經使用 Python 了一段時間,特別是在資料抓取的特定情況下,您可能遇到過在嘗試檢索資料時被阻止的情況。想。在這種情況下,了解如何使用代理是一項方便的技能。
在本文中,我們將探討什麼是代理、它們為何有用,以及如何透過 Python 中的函式庫請求來使用它們。
什麼是代理?
讓我們從頭開始定義什麼是代理。
您可以將代理伺服器視為電腦與網際網路之間的「中間人」。當您向網站發送請求時,該請求首先透過代理伺服器。然後,代理商將您的請求轉發到網站,接收回應並將其發送回給您。此過程會封鎖您的 IP 位址,使請求看起來像是來自代理伺服器而不是您自己的裝置。
可以理解,這有很多後果和用途。例如,它可以用來繞過一些討厭的 IP 限制,或保持匿名。
為什麼在網頁抓取中使用代理程式?
那麼,為什麼代理程式在抓取資料時可能會有所幫助?嗯,我們之前已經給了理由。例如,您可以使用它們來繞過某些限制。
因此,在網頁抓取的特定情況下,它們可能會很有用,原因如下:
- 避免 IP 封鎖:網站經常監視可疑活動,例如單一 IP 在短時間內發出大量請求。 使用代理有助於將您的請求分發到多個 IP,從而避免被封鎖。
- 繞過地理限制:某些內容只能從某些位置訪問,代理可以幫助您看起來就像是從其他國家/地區訪問該網站一樣。
- 增強隱私:代理程式可透過隱藏您的真實 IP 位址來保持您的抓取活動匿名。
如何在Python中使用請求來使用代理
requests 函式庫是在 Python 中發出 HTTP 請求的熱門選擇,並且將代理合併到您的請求中非常簡單。
讓我們看看如何!
獲取有效代理
首先要做的事情是:在實際使用代理之前,您必須獲得有效的代理。為此,您有兩種選擇:
- 免費代理:您可以從免費代理清單等網站免費取得代理。它們很容易訪問,但是,它們可能不可靠或很慢。
- 付費代理:Bright Data 或 ScraperAPI 等服務提供可靠的代理,具有更好的性能和支持,但您必須付費。
使用代理處理請求
現在您已經有了代理列表,您可以開始使用它們了。例如,您可以像這樣建立字典:
proxies = { 'http': 'http://proxy_ip:proxy_port', 'https': 'https://proxy_ip:proxy_port', }
現在您可以使用代理程式發出請求:
import requests proxies = { 'http': 'http://your_proxy_ip:proxy_port', 'https': 'https://your_proxy_ip:proxy_port', } response = requests.get('https://httpbin.org/ip', proxies=proxies)
要查看請求的結果,您可以列印回應:
print(response.status_code) # Should return 200 if successful print(response.text) # Prints the content of the response
請注意,如果一切順利,回應應該顯示代理伺服器的 IP 位址,而不是您的。
使用請求的代理身份驗證:使用者名稱和密碼
如果您的代理需要身份驗證,您可以透過多種方式處理。
方法 1:在代理 URL 中包含憑證
要包含使用者名稱和密碼來管理代理程式中的身份驗證,您可以這樣做:
proxies = { 'http': 'http://username:password@proxy_ip:proxy_port', 'https': 'https://username:password@proxy_ip:proxy_port', }
方法2:使用HTTPProxyAuth
或者,您可以使用 HTTPProxyAuth 類別來處理驗證,如下所示:
from requests.auth import HTTPProxyAuth proxies = { 'http': 'http://proxy_ip:proxy_port', 'https': 'https://proxy_ip:proxy_port', } auth = HTTPProxyAuth('username', 'password') response = requests.get('https://httpbin.org/ip', proxies=proxies, auth=auth)
如何使用旋轉代理處理請求
如果您發出大量請求,使用單一代理程式可能還不夠。在這種情況下,您可以使用輪換代理:這會定期或根據請求更改代理 IP 位址。
如果您想測試此解決方案,您有兩個選擇:使用清單手動輪換代理或使用代理輪換服務。
讓我們來看看這兩種方法吧!
使用代理列表
如果您有代理列表,您可以手動輪換它們,如下所示:
import random proxies_list = [ 'http://proxy1_ip:port', 'http://proxy2_ip:port', 'http://proxy3_ip:port', # Add more proxies as needed ] def get_random_proxy(): proxy = random.choice(proxies_list) return { 'http': proxy, 'https': proxy, } for i in range(10): proxy = get_random_proxy() response = requests.get('https://httpbin.org/ip', proxies=proxy) print(response.text)
使用代理輪換服務
ScraperAPI 等服務可以為您處理代理程式輪替。您通常只需要更新他們提供的代理 URL 並管理 URL 字典,如下所示:
proxies = { 'http': 'http://your_service_proxy_url', 'https': 'https://your_service_proxy_url', } response = requests.get('https://httpbin.org/ip', proxies=proxies)
結論
在 Python 中使用代理程式對於網頁抓取、測試和存取地理限制內容來說是一項很有價值的技術。如我們所見,使用庫請求將代理程式整合到 HTTP 請求中非常簡單。
從網路上抓取資料時的一些技巧:
- 尊重網站政策:請務必檢查網站的 robots.txt 檔案和服務條款。
- 處理異常:網路操作可能會因各種原因而失敗,因此請確保處理異常並在必要時實施重試。
- 保護您的憑證:如果您使用經過驗證的代理,請確保您的憑證安全並避免將其硬編碼到腳本中。
編碼愉快!
以上是如何在 Python 中使用代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

WebStorm Mac版
好用的JavaScript開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。