2、requests请求
请求方法:requests.get requests.post requests.put requests.delete requests.head requests.options
请求参数传递:get方法params参数,字典中含字段值为none的将不会被加入到url
post方法使用data参数,dict/元祖类型(使用同一个key名时可使用元祖列表)变量传递表单信息;如果传递的信息非表单形式,可以直接使用json参数直接传递;如果上传的是文件,可直接使用files参数,文件内容为以二进制方式打开(rb,wb,ab)的字节流,大文件可使用requests-toolbelt将请求作为数据流
定制请求头:使用dict将请求头传递给headers参数
3、requests响应
包含方法:
r.text 按照r.enconding设置的编码输出响应内容
r.content 返回字节类型的响应内容,会自动解码gzip,deflate传输编码的响应数据
r.encoding() 设置编码
r.json() 返回json响应内容,解码成功不能代表访问成功
r.status_code 返回响应状态码,当返回状态码为200时requests.codes.ok返回true
r.raise_for_status() 当返回为4XX,5XX时 ,可使用此函数抛出异常,返回200调用此函数返回none
r.headers 返回字典类型的响应头
4、cookie
获取指定cookie:r.cookies["键名"]
发送cookies:可指定参数cookies=字典类型的值
cookie返回对象为RequestsCookieJar,它的行为和字典类似,但接口更为完整,适合跨域名跨路径使用,还可以把 Cookie Jar 传到 Requests 中
jar = requests.cookies.RequestsCookieJar()
jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
jar.set('gross_cookie', 'blech', domain='httpbin.org', path='/elsewhere')
url = 'http://httpbin.org/cookies'
r = requests.get(url, cookies=jar)
r.text
5、重定向
除了head方法外,使用其他方法请求都会自动重定向
r.history 可用于追踪重定向,返回的是一个response对象列表,为完成这个请求而创建的对象,由老至近的顺序排序
禁止重定向:请求时参数allow_redirects=Flase
使用head请求,开启重定向:allow_redirects=True
6、超时
发送请求时,可指定超时时间:timeout=0.001,此为连接上服务器的时间,并非完成所有内容下载的时间,超时未连接上服务器会抛出异常