第一节:请求库之requests库

一 介绍

介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3)

注意:requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求

安装:pip3 install requests

各种请求方式:常用的就是requests.get()和requests.post()

import requests
r = requests.get(‘https://api.github.com/events‘)
r = requests.post(‘http://httpbin.org/post‘, data = {‘key’:’value’})
r = requests.put(‘http://httpbin.org/put‘, data = {‘key’:’value’})
r = requests.delete(‘http://httpbin.org/delete‘)
r = requests.head(‘http://httpbin.org/get‘)
r = requests.options(‘http://httpbin.org/get‘)

建议在正式学习requests前,先熟悉下HTTP协议

http://www.cnblogs.com/linhaifeng/p/6266327.html
官网链接:http://docs.python-requests.org/en/master/

二 基于GET请求
1、基本请求

import requests
response=requests.get(‘http://dig.chouti.com/‘)
print(response.text)
2、带参数的GET请求->params

自己拼接GET参数
params参数的使用
3、带参数的GET请求->headers

通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下

Host
Referer #大型网站通常都会根据该参数判断请求的来源
User-Agent #客户端
Cookie #Cookie信息虽然包含在请求头里,但requests模块有单独的参数来处理他,headers={}内就不要放它了
View Code
4、带参数的GET请求->cookies

View Code
三 基于POST请求
1、介绍

GET请求

HTTP默认的请求方法就是GET

  • 没有请求体
  • 数据必须在1K之内!
  • GET请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:

  1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
  2. 点击页面上的超链接也一定是GET请求
  3. 提交表单时,表单默认使用GET请求,但可以设置为POST

POST请求

(1). 数据不会出现在地址栏中
(2). 数据的大小没有上限
(3). 有请求体
(4). 请求体中如果存在中文,会使用URL编码!

!!!requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据

2、发送post请求,模拟浏览器的登录行为

对于登录来说,应该输错用户名或密码然后分析抓包流程,用脑子想一想,输对了浏览器就跳转了,还分析个毛线,累死你也找不到包

自动登录github(自己处理cookie信息)
requests.session()自动帮我们保存cookie信息
3、补充

View Code
四 响应Response
1、response属性

import requests
respone=requests.get(‘http://www.jianshu.com‘)

respone属性

print(respone.text)
print(respone.content)

print(respone.status_code)
print(respone.headers)
print(respone.cookies)
print(respone.cookies.get_dict())
print(respone.cookies.items())

print(respone.url)
print(respone.history)

print(respone.encoding)

关闭:response.close()

from contextlib import closing
with closing(requests.get(‘xxx’,stream=True)) as response:
for line in response.iter_content():
pass
2、编码问题

View Code
3、获取二进制数据

import requests

response=requests.get(‘https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1509868306530&di=712e4ef3ab258b36e9f4b48e85a81c9d&imgtype=0&src=http%3A%2F%2Fc.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2F11385343fbf2b211e1fb58a1c08065380dd78e0c.jpg‘)

with open(‘a.jpg’,’wb’) as f:
f.write(response.content)
获取二进制流
4、解析json

View Code
5、Redirection and History

先看官网的解释
利用github登录后跳转到主页面的例子来验证它
五 高级用法
1、SSL Cert Verification

View Code
2、使用代理

View Code
3、超时设置

View Code
4、 认证设置

View Code
5、异常处理

View Code
6、上传文件

View Code

上一篇
下一篇
Copyright © 2022 Egon的知识星球 egonlin.com 版权所有 帮助IT小伙伴学到真正的技术