Python中使用代理IP进行数据采集的技巧

2023-04-17 00:00:00 技巧 代理 数据采集

使用代理IP进行数据采集是常见的技巧,能够帮助我们隐藏自己的真实IP地址,防止被封禁或屏蔽。下面介绍Python中使用代理IP进行数据采集的技巧。

  1. 安装requests库

在Python中使用requests库进行数据采集,requests库是一个常用的HTTP库。如果没有安装该库,可以使用以下命令进行安装:

pip install requests
  1. 获取代理IP

可以在网上找到一些免费的代理IP。这里我们假设我们已经获取了一个代理IP:121.196.226.246:9999。

  1. 设置代理

使用requests库发送HTTP请求时,可以通过proxies参数设置代理:

import requests

proxy = {
    'http': 'http://121.196.226.246:9999',
    'https': 'http://121.196.226.246:9999'
}

r = requests.get('http://pidancode.com', proxies=proxy)
print(r.text)

上面的代码使用代理IP请求了“pidancode.com”网站,并输出了返回的HTML内容。其中,我们需要将代理IP地址放在proxy字典中,并指定http和https协议的代理。

  1. 验证代理是否可用

有时候获取的代理IP并不一定都是可用的,因此在使用之前需要验证一下代理是否可用。可以通过以下代码验证代理是否可用:

proxy = {
    'http': 'http://121.196.226.246:9999',
    'https': 'http://121.196.226.246:9999'
}

try:
    r = requests.get('http://pidancode.com', proxies=proxy)
    print(r.status_code)
except requests.exceptions.RequestException:
    print('Invalid proxy')

以上代码使用代理IP请求了“pidancode.com”网站,并输出了返回的状态码。如果出现异常,则说明代理IP可能不可用。

  1. 使用代理池

在实际使用中,我们通常不会只使用一个代理IP,需要使用多个代理IP进行轮换。这时可以很方便地使用代理池,将多个代理IP存储在代理池中,然后在请求时从代理池中随机选择一个代理。

以下是一个简单的代理池实现:

import requests
import random

proxies = [
    'http://121.196.226.246:9999',
    'http://42.238.87.216:9999',
    'http://183.166.20.179:9999'
]

proxy = {
    'http': random.choice(proxies),
    'https': random.choice(proxies)
}

try:
    r = requests.get('http://pidancode.com', proxies=proxy)
    print(r.status_code)
except requests.exceptions.RequestException:
    print('Invalid proxy')

上面的代码将多个代理IP存储在proxies列表中,然后在请求时从列表中随机选择一个代理IP,构建代理字典。这样就可以使用多个代理IP进行轮换了。

相关文章