python-requests模块

requests模块

一、发送请求
  • 向某个url发送get请求

    requests.get("https://www.baidu.com")
  • 发送一个post请求

    requests.post("https://www.baidu.com",data={"name":"zhuyu"})
  • 发送其他类型的请求也都可以

二、传递url参数
  • get请求传递参数

    arg = {"name":"zhuyu","password":"123"}
    requests.get("www.baidu.com",params=ars)
  • post请求传递参数

    data = {"key":"value"}
    requests.post("www.baidu.com",data=data)
三、响应内容
  • 获取响应的内容

    response = requests.get("www.baidu.com")
    html = response.text  # html就是网站的源码
    url = response.url    # 请求的url
  • 二进制响应内容

    response.content       # 返回的是二进制数据
  • json响应内容

    response.json          
    # 如果响应的是json格式,它会自动帮你处理json数据,如果不能转换的话,会抛出异常
    # 注意有的服务器在失败的响应也会返回json对象,请使用raise_for_status()或者status_code进行校验
四、指定请求头
url = "www.baidu.com"
headers = {
    "user-agent":"xixi"
}
response = requests.get(url=url,headers=headers)
五、复杂的post请求
  • 传递类似html表单的数据

    url = "www.baidu,com"
    data = {"name":"zhuyu"}
    requests.post(url=url,data=data)
  • 传递json格式数据

    import json
    url = "www.baidu,com"
    data = {"name":"zhuyu"}
    # 方式一:
    requests.post(url=url,data=json.dumps(data))
    # 方式二:
    requests.post(url=url,json=data)
六、上传文件
url = "www.baidu,com"
files = {"file":open("a.txt","rb")}
requests.post(url=url,files=files)
七、响应状态码
response = requests.get("www.baidu.com")
status_code = response.status_code  # 获取状态码

# 如果返回一个400,500的状态码,可以通过raise_for_status()来抛出异常
八、响应头
response.headers     # 这是响应的头部信息
九、cookie信息
  • 获取响应头的cookie信息

    cookie = response.cookie   #获取到cookie的字典
  • 为requests设置cookie信息

    # cookie它是RequestsCookieJar的对象
    cookies = requests.cookoes.RequestsCookieJar()
    cookies.set("name","zhuyu")
    cookies.set("password":"123")
    requests.get(url,cookies=cookies)
十、重定向与请求历史
  • history方法

    这是response对象里的一个方法或者属性,它是一个对象列表,按照从最老到最近的请求进行排序的
  • allow_redirects参数,模式为True的

    response = requests.get(url=url,allow_redirects=False)
    # 上面代码是禁止了重定向
十一、超时

你可以告诉reuqests在经过timeout参数设定的秒数时间之后停止等待响应

requests.get(url=url,timeout=5)
十二、错误与异常
错误异常
遇到网络问题Requests会抛出ConnectionError异常
返回了不成功的状态码Response会抛出raise_fir_status异常
请求超时抛出Timeout异常
若请求超过了设定的最大重定向次数抛出TooManyRedirects异常

十三、会话对象

会话对象让你在能够跨请求保持某些参数

# 拿到一个会话对象,这个会话同样能实现requests中的方法
session = requests.Session()
# 通过会话对象发送一个get请求到url
session.get(url=url)

------------------------------------------------------
# 会话也可用来为请求方法提供数据
session = requests.Session()
session.headers.update({"name":"zhuyu"})
session.get(url,headers={"age":22})
# 此时在本次请求的请求中有name:"zhuyu"&age:22,这两对键值对

------------------------------------------------------
# 上面这个只是在会话层面,如果在方法层面呢?参数是不会被跨请求保持的
session = requests.Session()
session.get(url=url,cookies={"name":"zhuyu"})
# 此时发送的get请求是带上"name"="zhuyu"这是cookie的
# 下面还是同一个session对象,我再发一个get请求,此时我没有写cookies这个参数
session.get(url=url)
# 结果:你会发现本次请求没有带上cookie
十四、请求与响应对象
response = requests.get(url=url)
# 列举下这行代码做了那几步
# 1、生成了一个Request的对象,里面包含着所携带的数据,将该对象发送到某个服务器去请求
# 2、一旦响应之后,就会产生一个Response的对象,这个对象包含着服务器传来的数据
# 3、最后将这个Response对象赋值给了response这个变量
------------------------------------------------------------------------
response.headers # 就是响应的请求头
response.request.headers  # 就是请求的请求头
十五、准备的请求(Prepared Request)
import requests
response = requests.get(url)
# 其实请求最终还是以session对象发送的,
session.send(Request对象,**kwargs)

-------------------------------------
from requests import Request,Session

session = Session()

req = Request("GET",url)

request=PreparedRequest(req)
# 官方文档说,我们可以在session对象send之前,对PreparedRequest对象再进行一些操作

response = session.send(request,
                       stream=strean,
                       verify=verify,
                       proxies=proxies,
                       cert=cert,
                       timeout=timeout)
print (response.status_code)
十六、SSL证书验证(verify)

Requests可以为HTTPS请求验证SSL证书,SSL验证默认是开启的,验证失败的话会抛出SSLError异常

# 设置证书路径
# 方式一:
request.get(url=url,verify=路径)
# 方式二:
session = requests.Session()
session.verify = 路径

# verify对应:SSL证书路径
十七、客户端证书(cret)
# cert :指定证书的路径
requests.get(url=url,cert=路径)

session = requests.Session()
session.cert = 路径
十八、CA证书

requests默认附带了一套它信任的证书,如果系统中装了certifi包,requests会试图使用它里面的证书,这样用户就不需要在修改代码的情况下更新他们信任的证书,所以我们经常更新certifi包

十九、响应体内容工作流
# stream:控制响应体内容的下载
response = requests.get(url,stream=True)
二十、流式上传(stream)
# requests可以上传文件
with open("a.txt","rb") as f:
    requests.post(url,data=f)
    
# 注意:传送的数据也就是文件,应该是一个文件对象
# 强烈建议建议使用二进制
二十一、post上传多个分块编码的文件
files = []
二十二、事件挂钩(hooks)
'''
可用的钩子:response,从一个请求产生的响应
用法:传递一个字典给hooks这个变量 {hook_name:callback_function}
这个callback_function会接收一个数据块作为它的第一个参数
hooks = dict(response=print_url)
'''
def print_url(response,*args,**kwargs):
    pass
二十三、代理(proxies)
import requests
proxies = {
    "http":"http://10.10.1.10:3128",
    "https":"https://10.10.1.10:1080"
}
response = requests.get(url=url,proxies=proxies)

转载于:https://www.cnblogs.com/zhuchunyu/p/10765828.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pythonrequests模块是一个用于发送HTTP请求的第三方库,支持GET、POST、PUT、DELETE等多种请求方式,并提供了丰富的API来处理响应。使用方法如下: 1. 安装requests模块:`pip install requests` 2. 导入requests模块:`import requests` 3. 发送请求:`response = requests.get(URL)` 4. 获取响应内容:`response.text` 更多详细用法请参考官方文档:https://docs.python-requests.org/zh_CN/latest/ ### 回答2: Python中的Requests模块是一个方便又简单的HTTP请求库,用于向网站发送HTTP请求和获取网站响应。使用Requests模块,我们可以实现Get、Post、Put、Delete等多种HTTP请求方式,并且可以设置请求头部、传递请求参数及数据、设置代理、会话维持、SSL证书验证等一系列高级功能。 一、发送一个简单的请求 我们可以通过类似如下的代码来发送一个简单的HTTP请求: ``` import requests response = requests.get('http://www.baidu.com') print(response.text) # 打印响应内容 ``` 以上代码中,我们先导入requests模块,然后通过requests.get方法,传入百度的URL地址,发起一个GET请求。这条请求将会抓取百度的HTML页面,并且将获取到的内容打印在屏幕上。 二、请求头定制 当我们通过requests库发起一个请求时,默认会附带一些默认的请求头部信息,比如User-Agent、Accept-Encoding、Connection、Accept-Language等。但是在某些场景下,我们可能需要自定义请求头部信息。 我们可以通过设置headers参数来设置请求头部信息: ``` import requests headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} response = requests.get('http://www.baidu.com', headers=headers) print(response.text) ``` 在以上代码中,我们通过定义一个headers变量,并设置User-Agent的信息以模拟浏览器发送的请求头部信息。这样,我们就可以通过Requests模块来设置请求头部,达到更好的伪装效果。 三、请求参数设置 有些HTTP请求,比如GET、DELETE等,需要在URL上携带查询参数,即查询字符串。我们可以通过传递params参数实现这个功能。 如下所示: ``` import requests params = {'key1': 'value1', 'key2': 'value2'} response = requests.get('http://www.baidu.com', params=params) print(response.url) # 打印请求URL ``` 在以上代码中,我们传递了一个名为params的字典作为请求参数,这样查询字符串的请求URL就会被构建出来。 四、请求数据携带 有些HTTP请求,比如POST、PUT等,需要在请求体中携带数据。requests模块提供了不同的函数来实现这个需求,主要有post、put等函数。 如下所示: ``` import requests payload = {'key1': 'value1', 'key2': 'value2'} response = requests.post('http://127.0.0.1:5000/', data=payload) print(response.text) ``` 在以上代码中,我们调用了requests.post函数来提交POST请求。其中,请求数据是以字典的形式传递的,通过参数data来指定。这样,我们就可以在HTTP请求中包含数据内容。 五、代理设置 有些场景下,我们需要使用代理服务器来访问网站,这时我们需要进行代理设置。 如下所示: ``` import requests proxies = { 'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080', } response = requests.get('http://www.baidu.com', proxies=proxies) print(response.text) ``` 以上代码中,我们可以通过设置proxies参数来指定代理服务器的地址和端口号。这样,我们就可以使用代理来请求网站。 六、会话维持 有些场景下,我们需要依次发起多个HTTP请求,这些请求中需要使用同一个Session。比如在维持用户登录状态时使用。 如下所示: ``` import requests s = requests.Session() s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') response = s.get('http://httpbin.org/cookies') print(response.text) ``` 以上代码中,我们通过调用requests.Session函数来创建一个Session对象。然后在Session对象中,使用get方法请求httpbin.org网站的cookies/set接口设置cookie,接着再调用get方法请求httpbin.org/cookies接口,这时候就会自动带上之前设置的cookie了。 七、SSL证书验证 有些HTTPS站点使用的是自签名证书,我们可以通过配置verify参数(默认响应True)来解决证书验证问题。 如下所示: ``` import requests response = requests.get('https://www.12306.cn', verify=False) print(response.text) ``` 在以上代码中,我们设置了verify参数为False。这样,在请求时,将会不进行SSL证书验证。当然,同样的,如果自己的服务器有合法的证书可以验证,也可以将这个参数设置为True,进行SSL证书的安全验证。 综上所述,requests模块是一个非常实用的Python库。它简单易学但又强大、灵活。通过requests模块可以非常方便地进行HTTP请求,并且可以设置请求头、请求参数、请求体等一系列内容,同时还可以进行会话维持、代理设置、SSL验证等高级功能。在实现爬虫、自动化程序、接口测试等方面,requests模块都是非常重要的工具。 ### 回答3: Python 是一门面向对象的编程语言,具有简洁易懂,语法简单,易于维护等优点,得到了广泛的使用。requestsPython 中一个用于发送 HTTP/1.1 请求的第三方库,它没有类似于 urllib 中一般的复杂构造器,而是提供了更直观的接口,可以帮助我们更加方便快捷地发送 HTTP 请求。 requests 模块在使用过程中常用的方法有 GET、POST、DELETE、PUT 等,常见的请求参数有 headers、params、data、json 等,在使用这些参数时需要注意其各自的用法和注意事项。 使用 requests 模块时需要进行如下步骤: 1.安装requests模块,可以通过pip命令快速安装,如:pip install requests。 2.导入requests模块,即:import requests。 3.使用requests模块提供的方法进行HTTP请求的发送和响应的处理,常见的方法有get、post、put、delete等。 例如,下面的代码展示了如何使用 requests 模块发送 GET 请求并获取响应: ``` import requests response = requests.get('http://example.com') print(response.status_code) # 打印响应状态码 print(response.text) # 打印响应内容 ``` 在进行 POST 请求的时候,我们需要像下面这样使用 data 参数将数据传递给服务器: ``` import requests data = {'username': 'example', 'password': 'example'} response = requests.post('http://example.com/login', data=data) print(response.status_code) # 打印响应状态码 print(response.text) # 打印响应内容 ``` 使用 requests 模块时需要注意一些常见的问题,如网络不稳定时的重试机制、使用 header 伪装自己的请求、HTTP 代理设置等等。 总之,requests 模块Python 中一个非常强大、易用的 HTTP 请求库,能够帮助我们快速地构造并发送 HTTP 请求,处理 HTTP 响应,方便地进行网络爬取、数据获取等任务,是 Python 中不可或缺的一个模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值