欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

requests模块的简单使用

程序员文章站 2024-03-19 22:36:28
...

简单介绍

简单来说,requests就是一个可以模拟发送请求的库。
安装方法:

pip install requests

帮助文档:
http://2.python-requests.org/zh_CN/latest/user/quickstart.html

使用方法

直接调用requests模块的get方法就可以发送get请求。返回值为一个Response对象

import requests

url = 'http://www.baidu.com'
response = requests.get(url)
print(response)
# <Response [200]>

Response对象以及函数属性介绍:

  1. content:响应内容,为字节类型可使用decode('utf-8')来转化为指定编码的字符串
  2. text:由python自动猜测的编码,类型为字符串
  3. json():用于返回值为json的情况,类型为字典类型。使用此函数就不用再使用第三方的json解析器
  4. headers:响应头
  5. request:该响应的请求对象

发送请求函数get参数解释:

  1. auth:用于网站权限认证,一般用于内网中
  2. headers:自定义请求头
  3. cookies:设置请求的cookie,也可以在请求头中添加cookie字段

自动保存cookie:当我们有时候发请求的时候需要用到上一个请求返回的cookie的时候,我们可以在发送请求的时候以参数的形式带上cookie,也可以使用session对象:

res = requests.get(url1)
res2 = requests.get(url2, cookies=res.cookies)
res = requests.get(url1)
session = requests.session()
session.get(url2)
  1. verify:对于HTTPS,默认情况下启用SSL验证,当使用requests模块直接访问的时候会发生如下错误:
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)

只需在发送请求的时候将verify参数设置为False即可

requests.post(url, data=form_data, verify=False)

requests模块提供自动转义功能,我们在URL或者参数中书写的中文都会自动转义,例如https://www.baidu.com/s?wd=爬虫

参数传递:

  1. 在get请求中,参数可以直接在URL后面,也可以只用params参数来传递
  2. post请求可以使用data(字典类型)参数,也可以使用json(字符串类型)参数

示例代码:

import requests

# 自定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0'
}
# 设置代理 ,获取代理ip:https://www.kuaidaili.com/free/
proxies = {
    'http': 'http://124.239.216.14:8060'
}
# get请求参数,中文自动转义
params = {}
# post请求参数,使用data传递的时候,参数类型为字典类型;使用json的时候,参数为字符串类型
form_data = {
    'name': 'value'
}
form_json = "{'name':'value'}"
url = 'http://www.baidu.com'
response = requests.get(url=url, headers=headers, params=params, proxies=proxies)
# 使用session保存cookies
session = requests.session()
session.post(url, data=form_data, json=form_json, verify=False)
# python猜测编码之后的字符串
print(response.text)
# 请求返回的内容,为字节类型,可调用decode('utf-8')方法来转换为字符串
print(response.content)
# 请求头
print(response.request.headers)
# 响应头
print(response.headers)
# 状态码
print(response.status_code)
# 请求的cookie
print(response.request._cookies)
# 响应的cookie
print(response.cookies)
# 请求的URL
print(response.url)
相关标签: 个人爱好