Skip to content
intermediate

如何在 Python 中使用 ProxyScrape 住宅代理进行网页抓取

一份分步指南,介绍如何使用 HTTP 和 SOCKS5 协议将 ProxyScrape 的住宅代理和数据中心代理集成到你的 Python 网页抓取脚本中。

SOCKS5 HTTP(S) 网页抓取

概述

ProxyScrape 提供住宅、数据中心和移动代理,支持 HTTP 和 SOCKS5,并拥有 9700 万+ IP 池作为支撑。本教程展示如何在 Python 中使用 ProxyScrape 代理进行网页抓取任务。你将学习配置同时使用 HTTP 和 SOCKS5 的请求、处理身份验证以及轮换代理。这些步骤适用于任何代理提供商,但我们以 ProxyScrape 为例,因为它具有可靠正常运行时间和长期稳定性。

步骤

  1. 从 ProxyScrape 获取代理凭据。 登录你的 ProxyScrape 仪表板,导航到代理列表或 API 部分。你将找到代理端点(IP:端口)、用户名和密码。ProxyScrape 提供按量付费和固定月度计费方案,因此请选择适合你抓取量的方案。

  2. 安装所需的 Python 库。 打开终端并安装 requests 和 requests[socks] 以支持 SOCKS5:

    pip install requests requests[socks]
    
  3. 编写一个使用 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())
    
  4. 使用 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())
    
  5. 轮换代理以避免速率限制。 如果你的 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}")
    
  6. 处理错误和重试。 代理连接可能会失败。将你的请求包裹在 try/except 块中,并实现失败时使用新代理的重试机制。这能确保你的抓取器保持稳健。

  7. 测试和扩展。 运行你的脚本并验证每次请求后 IP 都会变化。对于大规模抓取,考虑使用会话对象,并根据你的 ProxyScrape 套餐限制调整并发数。

注意: 始终尊重网站的服务条款和 robots.txt。ProxyScrape 的住宅代理和数据中心代理很可靠,但合乎道德的抓取实践是你自己的责任。