目录
- requests 方法
- 实例1
- 实例2
- 请求 json 数据文件,返回 json 内容:
- 使用 requests.request() 发送 get 请求
- post() 方法可以发送 POST 请求到指定 url
- post 请求带参数:
- requests.models.Response的常用属性
- 将返回结果转化为josn格式,我们进行反序列化
- 爬取文档乱码问题
requests 模块主要用来发 送 HTTP 请求,比 urllib 模块更简洁。
requests 方法
方法 | 描述 |
post(url, data, json, args) | 发送 POST 请求到指定 url |
get(url, params, args) | 发送 GET 请求到指定 url |
request(method, url, args) | 向指定的 url 发送指定的请求方法 |
实例1
# 导入 requests 包
import requests
# 发送请求
x = requests.get('https://www.runoob.com/')
# 返回网页内容
print(x.text)
实例2
# 导入 requests 包
import requests
# 发送请求
x = requests.get('https://www.runoob.com/')
# 返回 http 的状态码
print(x.status_code)
# 响应状态的描述
print(x.reason)
# 返回编码
print(x.apparent_encoding)
输出结果如下
200
OK
utf-8
请求 json 数据文件,返回 json 内容:
# 导入 requests 包
import requests
# 发送请求
x = requests.get('https://www.runoob.com/try/ajax/json_demo.json')
# 返回 json 数据
print(x.json())
输出结果如下:
{‘name’: ‘网站’, ‘num’: 3, ‘sites’: [{‘name’: ‘Google’, ‘info’: [‘Android’, ‘Google 搜索’, ‘Google 翻译’]}, {‘name’: ‘Runoob’, ‘info’: [‘菜鸟教程’, ‘菜鸟工具’, ‘菜鸟微信’]}, {‘name’: ‘Taobao’, ‘info’: [‘淘宝’, ‘网购’]}]}
使用 requests.request() 发送 get 请求
# 导入 requests 包
import requests
# 发送请求
x = requests.request('get', 'https://www.runoob.com/')
# 返回网页内容
print(x.status_code)
输出结果如下:
200
设置请求头:
# 导入 requests 包
import requests
kw = {'s':'python 教程'}
# 设置请求头
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("https://www.runoob.com/", params = kw, headers = headers)
# 查看响应状态码
print (response.status_code)
# 查看响应头部字符编码
print (response.encoding)
# 查看完整url地址
print (response.url)
# 查看响应内容,response.text 返回的是Unicode格式的数据
print(response.text)
输出结果如下:
200
UTF-8
https://www.runoob.com/?s=python+%E6%95%99%E7%A8%8B … 其他内容…
post() 方法可以发送 POST 请求到指定 url
一般格式如下:
# 导入 requests 包
import requests
# 发送请求
x = requests.post('https://www.runoob.com/try/ajax/demo_post.php')
# 返回网页内容
print(x.text)
输出结果如下:
本内容是使用 POST 方法请求的。
请求时间: 2022-05-26 17:30:47
post 请求带参数:
# 导入 requests 包
import requests
# 表单参数,参数名为 fname 和 lname
myobj = {'fname': 'RUNOOB','lname': 'Boy'}
# 发送请求
x = requests.post('https://www.runoob.com/try/ajax/demo_post2.php', data = myobj)
# 返回网页内容
print(x.text)
输出结果如下:
你好,RUNOOB Boy,今天过得怎么样?
requests.models.Response的常用属性
背景:做request 请求的时,返回数据为requests.models.Response。我们需要对返回结果做处理
Response响应的常用属性:
response.text # 响应回去的文本(字符串)
response.content # 响应回去的内容(二进制),一般用来爬取视频
response.status_code # 响应的状态码
response.url # 获取请求连接地址
response.cookies # 获取返回的cookies信息
response.cookies.get_dict() # 获取返回的cookies信息
response.request # 获取请求方式
将返回结果转化为josn格式,我们进行反序列化
response.json() # 将结果进行反序列化
爬取文档乱码问题
response.apparent_encoding # 文档的编码的方式(从HTML文档找)
response.encoding # 响应体编码方式
eg: response.encoding = response.apparent_encoding # 文档的声明方式
response.headers # 查看响应头
response.history # 重定向历史 即前一次请求的地址