GET 请求

>>> r = requests.get("https://httpbin.org/ip")

>>> r

<Response [200]> # 响应对象

>>> r.status_code # 响应状态码

200


>>> r.content # 响应内容

'{\n "origin": "183.237.232.123"\n}\n'...



POST 请求

>>> r = requests.post('http://httpbin.org/post', data = {'key':'value'})

自定义请求头

这个经常会用到,服务器反爬虫机制会判断客户端请求头中的User-Agent是否来源于真实浏览器,所以,我们使用Requests经常会指定UA伪装成浏览器发起请求


>>> url = 'https://httpbin.org/headers'

>>> headers = {'user-agent': 'Mozilla/5.0'}

>>> r = requests.get(url, headers=headers)


参数传递

很多时候URL后面会有一串很长的参数,为了提高可读性,requests 支持将参数抽离出来作为方法的参数(params)传递过去,而无需附在 URL 后面,例如请求 url http://bin.org/get?key=val ,可使用


>>> url = "http://httpbin.org/get"

>>> r = requests.get(url, params={"key":"val"})

>>> r.url

u'http://httpbin.org/get?key=val'...


指定Cookie

Cookie 是web浏览器登录网站的凭证,虽然 Cookie 也是请求头的一部分,我们可以从中剥离出来,使用 Cookie 参数指定


>>> s = requests.get('http://httpbin.org/cookies', cookies={'from-my': 'browser'})

>>> s.text

u'{\n "cookies": {\n "from-my": "browser"\n }\n}\n'...


设置超时

当发起一个请求遇到服务器响应非常缓慢而你又不希望等待太久时,可以指定 timeout 来设置请求超时时间,单位是秒,超过该时间还没有连接服务器成功时,请求将强行终止。


r = requests.get('https://google.com', timeout=5)...


设置代理

一段时间内发送的请求太多容易被服务器判定为爬虫,所以很多时候我们使用代理IP来伪装客户端的真实IP。


import requests


proxies = {

'http': 'http://127.0.0.1:1080',

'https': 'http://127.0.0.1:1080',

}...


r = requests.get('http://www.kuaidaili.com/free/', proxies=proxies, timeout=2)

Session

如果想和服务器一直保持登录(会话)状态,而不必每次都指定 cookies,那么可以使用 session,Session 提供的API和 requests 是一样的。


import requests...


s = requests.Session()

s.cookies = requests.utils.cookiejar_from_dict({"a": "c"})

r = s.get('http://httpbin.org/cookies')

print(r.text)

# '{"cookies": {"a": "c"}}'


r = s.get('http://httpbin.org/cookies')

print(r.text)

# '{"cookies": {"a": "c"}}'...