requests 模块常用函数与示例所有具体请求函数(get、post 等)都是对该函数的封装。method 必须是合法的 HTTP 方法。
import requests
resp = requests.request(
method='GET',
url='https://httpbin.org/get',
params={'q': 'python'},
headers={'User-Agent': 'my-app/1.0'},
timeout=5
)
print(resp.status_code) # 200
print(resp.json())
requests.get(url, params=None, **kwargs)requests.post(url, data=None, json=None, **kwargs)requests.put(url, data=None, **kwargs)requests.delete(url, **kwargs)requests.head(url, **kwargs)requests.options(url, **kwargs)requests.patch(url, data=None, **kwargs)
import requests
resp = requests.get(
'https://api.github.com/repos/psf/requests',
params={'per_page': 5},
headers={'Accept': 'application/vnd.github.v3+json'}
)
print(resp.status_code) # 200
print(resp.json()['stargazers_count'])
import requests
payload = {'username': 'test', 'password': '123456'}
resp = requests.post('https://httpbin.org/post', data=payload)
print(resp.status_code) # 200
print(resp.json()['form'])
import requests, json
data = {'name': 'Alice', 'age': 30}
resp = requests.post('https://httpbin.org/post', json=data)
print(resp.json()['json'])
Content-Type: application/json。RequestsCookieJar 对象。(username, password) 元组,支持 Basic、Digest 等。{'http': 'http://1.2.3.4:8080'}。True,返回的 Response 不会立即下载内容,适合大文件。
import requests
try:
resp = requests.get('https://httpbin.org/delay/10', timeout=3)
resp.raise_for_status()
except requests.exceptions.Timeout:
print('请求超时')
except requests.exceptions.HTTPError as e:
print('HTTP 错误:', e)
import requests, random
proxy_pool = [
{'http': 'http://121.237.148.95:3000'},
{'http': 'http://1.202.116.62:8118'},
{'http': 'http://218.75.102.198:8000'}
]
proxy = random.choice(proxy_pool)
resp = requests.get('https://httpbin.org/ip', proxies=proxy, timeout=5)
print(resp.json())
使用 requests.Session() 可以在多次请求之间共享 cookies、headers、连接池等,提升效率。
import requests
session = requests.Session()
session.headers.update({'User-Agent': 'my-app/1.0'})
# 第一次请求,服务器返回 cookie
resp1 = session.get('https://httpbin.org/cookies/set/sessioncookie/abc123')
print('第一次 cookies:', resp1.cookies.get_dict())
# 第二次请求自动带上上一次的 cookie
resp2 = session.get('https://httpbin.org/cookies')
print('第二次返回的 cookies:', resp2.json())
Session 还能通过 session.mount() 自定义适配器,实现长连接池、重试等高级特性。
import requests
files = {'file': open('example.pdf', 'rb')}
resp = requests.post('https://httpbin.org/post', files=files)
print(resp.json()['files'])
import requests
url = 'https://speed.hetzner.de/100MB.bin'
with requests.get(url, stream=True) as r:
r.raise_for_status()
with open('100MB.bin', 'wb') as f:
for chunk in r.iter_content(chunk_size=8192):
if chunk:
f.write(chunk)
print('下载完成')
requests 提供了直观的 API,涵盖了 HTTP 方法、会话管理、代理、超时、流式处理等常见需求。掌握上述函数与关键字参数后,基本可以应对大多数网络交互场景。