10.2 发起请求

http请求已经成为现在访问远程服务最普遍的协议,我们用浏览器看网页、微信小程序、大部分的app。
本节我们要学习用python代码发起http请求。
首先需要安装requests模块,运行以下命令安装
pip install requests
如图所示:
如果pip命令不存在,那么找到python安装目录,将Script文件夹加入环境变量,重启cmd,就有pip命令了。
接下来就可以直接调用代码发起请求了:
import requests
r = requests.get("https://www.baidu.com")
print (r.status_code)
print (r.content.decode(r.apparent_encoding))
get函数表示一次get请求,还可以发起一个post请求。
请求要求一个完整的URL地址,包括最前面的http或https协议
r是get函数的返回,里面包含了html代码,第三行的打印在网页访问正常的时候是200;网页内部有错误是500;网页不存在,就是著名的404了。
这段代码将打印:
我们可以看到,百度主页的html代码取过来了。

get方法还可以带请求的参数和头部信息
headers={'Authorization''token 52ee7d4c57686ca8d6884fa4c482a28'}
payload={'message'"Opportunities and challenges together"}
r = requests.get(url, headers=headers, params=payload) 
header我们比较陌生,因为作为网页浏览者是不需要手动输入这些信息的:网页编码,源头网址,Cookie

post方法和get类似。只是param参数名改成了data。
下面是本网站的登陆:
import requests
url="https://www.codessp.cn/api/login"
payload={'username'"abcde","password":"123456"#运行的时候用你的账号和密码替换
r = requests.post(url, headers=None, data=payload)
print (r.status_code)
print (r.content.decode(r.apparent_encoding)
有一些网站为了防止代码登陆,然后获取网站信息,例如抢票(抢票本身就是一个请求,极有可能是一个post请求),登陆的时候就采用检测的方式,例如拉滚动条,识别文字、图像这些需要真人才能做到的事。