如何在 Python 中使用 ProxyScrape 住宅代理进行网页抓取
一份分步指南,介绍如何使用 HTTP 和 SOCKS5 协议将 ProxyScrape 的住宅代理和数据中心代理集成到你的 Python 网页抓取脚本中。
概述
ProxyScrape 提供住宅、数据中心和移动代理,支持 HTTP 和 SOCKS5,并拥有 9700 万+ IP 池作为支撑。本教程展示如何在 Python 中使用 ProxyScrape 代理进行网页抓取任务。你将学习配置同时使用 HTTP 和 SOCKS5 的请求、处理身份验证以及轮换代理。这些步骤适用于任何代理提供商,但我们以 ProxyScrape 为例,因为它具有可靠正常运行时间和长期稳定性。
步骤
-
从 ProxyScrape 获取代理凭据。 登录你的 ProxyScrape 仪表板,导航到代理列表或 API 部分。你将找到代理端点(IP:端口)、用户名和密码。ProxyScrape 提供按量付费和固定月度计费方案,因此请选择适合你抓取量的方案。
-
安装所需的 Python 库。 打开终端并安装
requests和requests[socks]以支持 SOCKS5:pip install requests requests[socks] -
编写一个使用 HTTP 代理的基础抓取脚本。 创建一个 Python 文件,并使用以下代码通过 ProxyScrape 的 HTTP 代理发送请求。将占位符替换为你实际的凭据。
import requests proxy_url = "http://username:password@proxy-endpoint:port" proxies = { "http": proxy_url, "https": proxy_url, } response = requests.get("http://httpbin.org/ip", proxies=proxies, timeout=10) print(response.json()) -
使用 SOCKS5 代理以获得更好的匿名性。 ProxyScrape 支持 SOCKS5。将代理 URL 协议修改为
socks5://:import requests proxy_url = "socks5://username:password@proxy-endpoint:port" proxies = { "http": proxy_url, "https": proxy_url, } response = requests.get("http://httpbin.org/ip", proxies=proxies, timeout=10) print(response.json()) -
轮换代理以避免速率限制。 如果你的 ProxyScrape 套餐提供轮换端点,请为每个请求使用该端点。否则,维护一份来自仪表板的代理端点列表并循环使用它们。示例:
import requests import random proxy_list = [ "http://user:pass@proxy1:port", "http://user:pass@proxy2:port", # ... 添加更多 ] def get_random_proxy(): return random.choice(proxy_list) for _ in range(10): proxy_url = get_random_proxy() proxies = {"http": proxy_url, "https": proxy_url} try: response = requests.get("http://httpbin.org/ip", proxies=proxies, timeout=10) print(response.json()) except Exception as e: print(f"Proxy failed: {e}") -
处理错误和重试。 代理连接可能会失败。将你的请求包裹在 try/except 块中,并实现失败时使用新代理的重试机制。这能确保你的抓取器保持稳健。
-
测试和扩展。 运行你的脚本并验证每次请求后 IP 都会变化。对于大规模抓取,考虑使用会话对象,并根据你的 ProxyScrape 套餐限制调整并发数。
注意: 始终尊重网站的服务条款和 robots.txt。ProxyScrape 的住宅代理和数据中心代理很可靠,但合乎道德的抓取实践是你自己的责任。