发送 HTTP 请求
requests 模块
请求与响应
HTTP
就是发送请求和获取响应的一个过程,而
requests
模块只需要一步就能完成这样的一
个过程,并且 requests 支持所有的
HTTP
请求的方法和响应数据,先进行语法介绍。
r = requests.方法(url,headers,data,…)
其中
URL
参数是必填的,毕竟
HTTP
请求就是对指定的
URL
进行发送,其他各种参数可根
据实际请求的需要选择性使用。
发送请求后会获取响应结果,然后把结果赋值给变量,最后通过变量的属性值取出需要的结
果,下面是常用返回结果。
r.headers 获取返回的头信息
r.text 获取返回的主体
r.cookies 获取返回的 cookie
r.status_code 获取返回的状态码
请求参数
URL 参数
URL
是唯一的必填参数,既然是网络请求,必须要有
URL
地址才能发送,就像快递一定
要写目的地才能发件一样。先从最简单的
HTTP
请求讲起,请求一个静态页面,比如访问网
易首页,通过抓包可以看到该请求是用
get
方式发送的,所以要调用
requests
的
get()
方法来发
送请求。
以网易首页作为请求例子,实例代码:
import requests
test_url = "http://www.163.com" #将网易首页的 URL 赋值到变量 test_url 中(这样的好处在于看起来清晰,也方便代码今后的维护,只需要修改 test_url 对应的 URL 就行了)
response = requests.get(test_url) #在 get()方法中将变量 test_url 直接传入,即完成了带着 URL 的 get 请求(结果会赋值到变量 response 中,response 中包含了返回结果的所有数据,可以根据需要获取想要的数据)。
print (response.status_code)#获取并打印返回结果的状态码。
print (response.headers)#获取并打印返回结果的头信息
print (response.text)#获取并打印返回结果的内容
执行结果
headers 参数
还是以网易首页作为例子,如果是
pc
端的请求,会返回
pc
端的页面,如果是手机端的请求,
则返回手机端的页面,这时候就要用带上
headers
参数的请求,通过浏览器的抓包工具可以看到
headers
有个字段“
User-Agent
”,而服务器就是根据这个字段来判断访问的来源,如果需要模拟
手机端请求,需要将“
User-Agent
”改为请求的手机型号。
实例代码:
import requests
test_url = "http://www.163.com"
h = {"User-Agent":"Android/H60-L01/4.4.2/"}#将需要发送的 headers 赋值到变量 h 之中
response = requests.get(test_url,headers = h) #在 get()方法中加一个 headers 的参数,然后将变量 h 赋值给 headers 参数,即完成了带着header 信息的 get 请求。
print (response.status_code)
print (response.headers)
print (response.text)
执行结果
运行后会发现请求的网页是手机网易网,而非
pc
端的网易网
cookies 参数
cookies
也是最常用的参数之一,因为只要涉及登录后数据获取,都需要用到
cookies
参数,
那么如何获取
cookie
呢?一种是通过
post
发送登录请求,获取返回值的
cookies
属性(这个会在
后面的实例中讲解),还有一种就是通过浏览器的网络抓包的方式获取,在还不会熟练使用
requests 模块的前提下,就先介绍如何通过抓包获取 cookies
吧。
首先打开
chrome