初级打开
import requests
response = requests.get("http://www.baidu.com/")
print(response.status_code) # 返回的状态码
print(response.text) # 返回的网页
print(response.content) # 返回的二进制,图片,视频使用
print(response.json()) # 返回的json格式
print(response.cookies) # 返回的cookies
print(response.headers) # 返回响应的头信息
print(response.history) # 可以看出是否重定向
print(response.url) # 请求的url
print(response.apparent_encoding) # 网页的编码格式
print(response.encoding) # 根据HTTP猜测网页的编码格式
乱码问题
不同网页有自己的编码格式如utf-8,gbk,gb2312,所以有时候我们得到的网页是乱码,下面我们将解决一下乱码问题
# 设置文本编码防止出现乱码,3种方式
response.encoding = 'UTF-8' # 这种我们需要知道网页的编码才可以设置
response.encoding = response.apparent_encoding # 自动根据网页的编码设置
# 最后一种办法,使用chardet探测编码,完了进行赋值,
# detect返回字典,encoding编码形式,confidence是检查精度
import chardet
print(chardet.detect(response.content))
response.encoding = chardet.detect(response.content)['encoding']
响应码的判断是否成功
# 响应码code,如果正常执行,否则抛出响应码异常
if response.status_code == requests.codes.ok:
print(response.text)
else:
response.raise_for_status()
get请求
import requests
"""
get方式
params 传递的参数会在url的后面,跟在问号后面,以百度为例,以字典的方式传入,会对其进行编码,如下
params = {
'ie': 'UTF-8',
'wd': '百度'
}
https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6
headers 添加请求信息如User-Agent等信息,格式如下
headers ={
'User-Agent':“ ”
}
timeout 超时抛出异常
cookies 因为HTTP是无状态访问,为了让服务器认识我们,需要添加cookies,以字典的方式传参
allow_redirects = True 允许重定向,设置False 禁止重定向,默认允许
# proxies 是ip
proxies = {
'https': 'https://ip+端口',
'http':'http://ip+端口'
}
"""
response = requests.get(url='https://www.baidu.com/', params=params,headers='',
cookies='',allow_redirects=True,proxies)
print(response.url) # https://www.baidu.com/?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6
post请求
"""post 是向服务器提交数据的请求"""
# data是提交的数据,其他的参数和get一样
# files 上穿文件
files = {'字段名称': open('地址' 'rb')}
data ={}
response= requests.post(url='',headers='',data='',proxies=proxies)
cookie
from requests.cookies import RequestsCookieJar
jar = RequestsCookieJar()
cookies = cookies.items()
for key, values in cookies:
jar.set(key, values)
response = requests.get(url, cookies=jar)
会话session
session会自己处理cookie,不需要我们管
import requests
requests = requests.Session()
response = requests.get()
html = response.text
异常
requests.exceptions里面包含许多异常模块
"""
HTTPError # 返回的状态吗不是成功的引起异常
ConnectionError # 网络连接错误,如没有网,拒绝链接
URLRequired # url缺失
TooManyRedirects # 超过了最大重定向次数
ConnectTimeout # 连接服务器超时异常
使用方法如下:
"""
from requests.exceptions import HTTPError
try:
response = requests.get()
except HTTPError as e:
print(e.code)
print(e.reason)