requests库的使用
概述
requests库用于网页请求并接收返回信息,requets库的功能有:
- 常用请求
- 请求方式
- GET请求
- POST请求
- 请求携带的信息
- 请求头headers
- 设置cookies
- Session维持
- SSL证书验证
- 超时设置
- 身份验证
- 代理设置
- 请求方式
- 常见响应
- requests库中字符串形式的json格式转换为字典或者列表形式的json格式
- 抓取二进制数据
- 基本响应信息
-
GET请求
基本使用方法:
import requests
r = requests.get('https://www.httpbin.org/get')#r为请求服务器后,服务器返回的内容对象
print(type(r))
print(r.text)#得到返回对象中html的内容
#运行结果:
# <class 'requests.models.Response'>
# {
# "args": {},
# "headers": {
# "Accept": "*/*",
# "Accept-Encoding": "gzip, deflate, br",
# "Host": "www.httpbin.org",
# "User-Agent": "python-requests/2.28.1",
# "X-Amzn-Trace-Id": "Root=1-63e4fb5d-44b2e3f35eff732c0c58a580"
# },
# "origin": "113.242.112.214",
# "url": "https://www.httpbin.org/get"
# }
添加请求参数
用GET附加额外的信息
https://www.httpbin.org/get?name=germey&age=25
额外提供的参数:?name=germey&age=25
可以不用表示在URL中
import requests
data = {
'name':'germey',
'age':25
}
r = requests.get('https://www.httpbin.org/get',params=data)
print(r.text)
#运行结果:
# {
# "args": {
# "age": "25",
# "name": "germey"
# },
# "headers": {
# "Accept": "*/*",
# "Accept-Encoding": "gzip, deflate, br",
# "Host": "www.httpbin.org",
# "User-Agent": "python-requests/2.28.1",
# "X-Amzn-Trace-Id": "Root=1-63e4fd0a-733704a41b2421896b83e355"
# },
# "origin": "113.242.112.214",
# "url": "https://www.httpbin.org/get?name=germey&age=25"
# }
requests中习惯于将URL中定义的?query
与;parameters
定义为params参数(URL构成)
-
requests库中字符串形式的json格式转换为字典或者列表形式的json格式
import requests
r = requests.get('https://www.httpbin.org/get')
print(type(r.text))
print(r.json())#此处不用写为r.text.json()直接用requests中的json()方法
print(type(r.json()))
#运行结果
# <class 'str'>
# {'args': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br', 'Host': 'www.httpbin.org', 'User-Agent': 'python-requests/2.28.1', 'X-Amzn-Trace-Id': 'Root=1-63e5004b-770950fc3bd689b978e4bfce'}, 'origin': '113.242.112.214', 'url': 'https://www.httpbin.org/get'}
# <class 'dict'>
核心为将字符串转化为字典或者列表方便下一步信息操作
-
抓取二进制数据
二进制数据:图片、音频、视频等由二进制码组成的文件
import requests
r = requests.get('https://scrape.center/favicon.ico')
print(r.text)#返回的是str类型的数据
print(r.content)#返回的是bytes类型的数据
print(r.text.encode())#可以将str类型转换为bytes类型的数据
print(r.content.decode())#可以将bytes类型的数据转换为str类型的数据
关于python编码问题详情见python字符编码问题处理
r.content的前面带一个b,代表是bytes类型的数据
-
请求头headers
添加请求头信息,伪装成正常浏览器
import requests
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.12022 SLBChan/103'
}
r = requests.get('https://ssr1.scrape.center/',headers = headers)
print(r.text)
-
POST请求
import requests
data = {'name':'germey','age':'25'}
r = requests.post('https://www.httpbin.org/post',data=data)
print(r.text)
-
基本响应信息
import requests
r = requests.get('https://ssr1.scrape.center/')
print(type(r.status_code),r.status_code)#状态码
print(type(r.headers),r.headers)#响应头
print(type(r.cookies),r.cookies)#得到cookies
print(type(r.url),r.url)#url
print(type(r.history),r.history)#请求历史
标签:www,httpbin,get,使用,print,org,requests
From: https://www.cnblogs.com/KeepEarlyHours/p/17107552.html