requests模块的简单使用

简单介绍

简单来说,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)
发布了125 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/li3455277925/article/details/103866215