Python请求示例怎么写?爬虫/API调用的requests库实操代码指南!

代理IP 2026-01-23 代理知识 4 0
A⁺AA⁻
国外IP代理推荐:
IPIPGO|全球住宅代理IP(>>>点击注册免费测试<<<)
国内IP代理推荐:
天启|全国240+城市代理IP(>>>点击注册免费测试<<<)

代理IP到底有啥用?

简单来说,代理ip就像一个中间人。平常你上网,是你的电脑直接跟网站服务器对话。用了代理IP,就变成了你的电脑先跟代理服务器说话,再由代理服务器去跟目标网站沟通。这样做有几个实实在在的好处:

Python请求示例怎么写?爬虫/API调用的requests库实操代码指南!

它能隐藏你的真实IP地址。对需要保护隐私的用户来说,这很重要。对于需要大量采集公开数据的爬虫程序,使用代理IP可以避免因频繁访问而被目标网站封禁。一个IP被封了,换一个接着用,不影响任务。某些业务场景下,可能需要特定地区的IP来获取当地的内容或服务,代理IP可以轻松实现这一点。

市面上提供代理IP的服务商很多,比如专业的ipipgo,它整合了全球众多国家和地区的住宅IP资源,IP池庞大且纯净,能很好地满足上述需求。

Python requests库基础:不用代理先走通

在学用代理之前,咱们得先把基本的请求搞明白。Python里有个非常流行的库叫requestsHTTP请求特别简单。

先来看一个最简单的GET请求示例:

import requests

url = 'https://httpbin.org/ip'   这个网站会返回你的IP信息
response = requests.get(url)
print(response.json())   打印出你的真实ip地址

运行这段代码,你会看到一个包含你本机IP地址的JSON数据。这就是没有使用任何代理时的情况。

requests库的功能很强大,除了GET,还支持POST、PUT、DELETE等各种HTTP方法,并且可以方便地添加请求头(Headers)、传递参数等。把这些基础操作练熟,是成功使用代理IP的前提。

给requests穿上“代理”外衣

现在进入正题,如何在requests请求中使用代理IP。requests库设计得很人性化,它允许你通过一个proxies参数来设置代理。

这个proxies参数是一个字典(Dictionary),你需要根据代理服务器使用的协议(如HTTP、HTTPS、SOCKS),分别指定代理地址。格式长这样:

proxies = {
    "http": "http://10.10.1.10:3128",    HTTP协议的代理地址和端口
    "https": "http://10.10.1.10:1080",   HTTPS协议的代理地址和端口
}

然后,在发请求时把这个字典传进去:

import requests

proxies = {
    "http": "http://你的代理服务器IP:端口",
    "https": "http://你的代理服务器IP:端口",
}

url = 'https://httpbin.org/ip'
response = requests.get(url, proxies=proxies)
print(response.json())   这次返回的应该是代理服务器的IP了

注意,如果你的代理服务器需要用户名和密码认证,需要把地址写成这种格式:http://user:pass@ip:port

实战演练:从ipipgo获取代理并用于爬虫

理论讲完了,我们来个真刀真枪的练习。假设你已经从ipipgo获得了代理IP的信息(比如一个HTTP代理的地址、端口、用户名和密码)。

ipipgo提供的代理IP类型丰富,支持全协议,无论是动态IP还是静态ip都能满足。我们以http代理为例:

import requests

 从ipipgo获取的代理信息
proxy_ip = "1.2.3.4"   替换为你的代理IP
proxy_port = "54321"   替换为你的代理端口
proxy_user = "your_username"   替换为你的用户名
proxy_pass = "your_password"   替换为你的密码

 构建带认证的代理字典
proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_ip}:{proxy_port}"
proxies = {
    "http": proxy_url,
    "https": proxy_url,   假设这个代理也支持HTTPS
}

 设置一个目标网站,例如一个测试IP的网站
test_url = "https://httpbin.org/ip"

try:
    response = requests.get(test_url, proxies=proxies, timeout=10)
    response.raise_for_status()   检查请求是否成功
    print("请求成功!")
    print("当前使用的IP是:", response.json())
except requests.exceptions.RequestException as e:
    print("请求出错:", e)

这段代码的关键点在于正确拼接带认证信息的代理URL,并在请求时传入proxies参数。如果一切正常,httpbin.org/ip返回的将是你从ipipgo获取的那个代理ip地址,而不是你本机的IP。

高级技巧:让代理IP用得更溜

只会单个代理还不够,在实际项目中,我们往往需要管理一个IP池,让程序自动切换。

1. 构建IP池并随机选择

你可以把多个代理IP放在一个列表里,每次请求时随机选一个用。

import random

 模拟一个IP池
proxy_pool = [
    "http://user1:pass1@ip1:port1",
    "http://user2:pass2@ip2:port2",
     ... 可以添加更多
]

def get_random_proxy():
    return {"http": random.choice(proxy_pool), "https": random.choice(proxy_pool)}

 使用随机代理发起请求
response = requests.get(url, proxies=get_random_proxy())

2. 处理代理失效的情况

代理IP可能会失效,所以代码里必须有容错机制。一个简单的思路是重试。

max_retries = 3
for i in range(max_retries):
    try:
        proxy = get_random_proxy()
        response = requests.get(url, proxies=proxy, timeout=5)
         如果状态码是200,说明可能成功了,但还要检查返回内容是否正常
        if response.status_code == 200:
            break   成功就跳出循环
    except Exception as e:
        print(f"第{i+1}次尝试失败:{e}")
        if i == max_retries - 1:
            print("所有重试均失败,请检查代理IP或网络。")

3. 会话保持(Session)

如果你需要在一系列请求中保持会话(如保持登录状态),并且这些请求都要通过同一个代理,使用requests.Session()是更好的选择。

session = requests.Session()
session.proxies.update(proxies)   为整个会话设置代理

 后续所有用这个session发的请求都会自动使用代理
response1 = session.get('https://example.com/page1')
response2 = session.get('https://example.com/page2')

常见问题QA

Q1: 代码报错,提示代理连接失败,是哪里出了问题?

A1: 最常见的原因有几个:1)代理IP地址或端口号写错了;2)代理服务器需要认证,但用户名或密码错误/未提供;3)代理服务器本身不稳定或已失效;4)本地网络问题。建议先核对信息,然后用最简单的代码测试。

Q2: 用了代理IP,为什么访问速度变慢了?

A2: 这是正常现象。因为你的请求需要先绕到代理服务器,再由它转发,路程变长了,自然会有延迟。速度取决于代理服务器的网络质量、与你本机的物理距离以及负载情况。选择像ipipgo这样拥有高质量全球网络节点的服务商,可以在很大程度上保证速度和稳定性。

Q3: 我应该选择HTTP代理还是socks5代理

A3: HTTP代理通常只能处理HTTP/HTTPS流量,而SOCKS5代理更底层,可以处理各种类型的流量(如FTP)。对于绝大多数网页爬虫和API调用,HTTP/HTTPS代理就足够了。socks5更灵活但可能稍慢一些。ipipgo全协议支持,你可以根据实际需求灵活选择。

Q4: 如何验证代理IP是否真的生效了?

A4: 最直接的方法就是访问一个能显示IP地址的网站,比如我们例子中一直用的 https://httpbin.org/ip。如果返回的IP地址和你设置的代理IP一致,那就说明生效了。

国外IP代理推荐:
IPIPGO|全球住宅代理IP(>>>点击注册免费测试<<<)
国内ip代理推荐:
天启|全国240+城市代理IP(>>>点击注册免费测试<<<)

发表评论

发表评论:

扫一扫,添加您的专属销售

扫一扫,添加您的专属销售