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
对象以及函数属性介绍:
-
content
:响应内容,为字节类型可使用decode('utf-8')
来转化为指定编码的字符串 -
text
:由python自动猜测的编码,类型为字符串 -
json()
:用于返回值为json的情况,类型为字典类型。使用此函数就不用再使用第三方的json
解析器 -
headers
:响应头 -
request
:该响应的请求对象
发送请求函数get参数解释:
-
auth
:用于网站权限认证,一般用于内网中 -
headers
:自定义请求头 -
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)
-
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=爬虫
参数传递:
- 在get请求中,参数可以直接在URL后面,也可以只用
params
参数来传递 - 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)