python requests 基础资料
import requests
response = requests.get('http://www.baidu.com')
response.encoding='utf-8'
print('状态码:',response.status_code) # 打印状态码
print('url:', response.url) # 打印请求url
print('header:',response.headers) # 打印头信息
print('cookie:',response.cookies) # 打印cookie信息
print('源码:',response.text) #以文本形式打印网页源码
print('字节流形式打印:',response.content) #以字节流形式打印
---------------------------------------------------------------
带参数的GET请求:
第一种直接将参数放在url内
import requests
response = requests.get(http://httpbin.org/get?name=psl&age=21)
print(response.text)
运行结果:
{
"args": {
"age": "21",
"name": "psl"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"origin": "59.51.114.216, 59.51.114.216",
"url": "https://httpbin.org/get?name=psl&age=21"
}
第二种
import requests
data = {
'name': 'psl',
'age': 21
}
response = requests.get('http://httpbin.org/get', params=data)
print(response.text)
----------------------------------------------------------------------------
#为你的请求添加头信息
import requests
heads = {}
heads['User-Agent'] = 'Mozilla/5.0 ' \
'(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \
'(KHTML, like Gecko) Version/5.1 Safari/534.50'
response = requests.get('http://httpbin.org/get',headers=heads)
print(response.text)
运行结果:
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"
},
"origin": "59.51.114.203, 59.51.114.203",
"url": "https://httpbin.org/get"
}
——————————————————————————————————————————
#获取cookie
import requests
response = requests.get('http://www.baidu.com')
print(response.cookies)
print(type(response.cookies))
for k,v in response.cookies.items():
print(k+':'+v)
——————————————————————————————————————————————
#使用代理
import requests
proxies= {
"http":"115.218.218.231:9000",
"http":"58.48.168.166:51430"
}
response = requests.get('http://httpbin.org/get',proxies=proxies)
print(response.text)
运行结果:{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"origin": "58.48.168.166, 58.48.168.166",
"url": "https://httpbin.org/get"
}
——————————————————————————————————————————————————
异常处理
在你不确定会发生什么错误时,尽量使用try...except来捕获异常
所有的requests exception:
import requests
from requests.exceptions import ReadTimeout,HTTPError,RequestException
try:
response = requests.get('http://www.baidu.com',timeout=0.5)
print(response.status_code)
except ReadTimeout:
print('timeout')
except HTTPError:
print('httperror')
except RequestException:
print('reqerror')
pip install requests 安装
Requests 的七个主要方法 与 HTTP 对应方法
requests.request(): 构造一个请求 支撑以下各方法的基础方法
requests.get(): 获取HTML网页的主要方法 GET
requests.head(): 获取HTML网页头信息的方法 HEAD
requests.post(): 向HTML网页提交post请求的方法 POST
requests.put(): 向HTML网页提交put请求的方法 PUT
requests.patch(): 向HTML网页提交局部修改请求的方法 PATCH
requests.delete(): 向HTML网页提交删除请求的方法 DELETE
requests 库支持六种常见的连接异常
requests.ConnectionError 网络连接错误异常,如 DNS 查询失败、拒绝连接等
requests.HTTPError HTTP 错误异常
requests.URLRequired URL 缺失异常
requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求 URL 超时,产生超时异常
**kwargs: 13个控制访问的参数
params: 字典或字节序列,作为参数增加到 url 中
data: 字典、字节序列或文件对象,作为 Request 的内容
timeout: 设定超时时间,秒为单位 如果设定时间内未返回,将产生一个 TimeoutError 异常
json: JSON 格式的数据,作为 Request 的内容
proxies: 字典类型,设定访问代理服务器,可以增加登录认证
header: 字典,可以用其来控制访问链接的 HTTP 头
allow_redirects: 重定向开关,True/False,默认为True
cookies: 字典或 CookieJar,Request 中的 cookie
stream: 获取内容立即下载开关,默认为True
auth: 元组,支持 HTTP 认证功能
verify: 认证 SSL 证书开关,默认为True
files: 字典类型,向服务器传输文件时使用的字段
cert: 保存本地 SSL 证书路径的字段
1.request() 方法
request() 方法是所有方法的基础方法,其余的所有方法都是基于 request() 方法来封装的
格式:requests.request(method, url, **kwargs)
method : 请求方式,不同的方式对应不同的 HTTP 请求功能
url : 拟获取页面的url链接
**kwargs: 控制访问的参数,共13个
r=r.request(GET,"http://www.baidu.com") 与 r=r.get("http://www.baidu.com") 等价
2.get()方法
response = requests.get(url, params=None, **kwargs)
url : 拟获取页面的url链接? params : url中的额外参数,字典或字节流格式,可选
params参数是字典或字节序列,作为参数增加到url中
**kwargs: 12个控制访问的参数
response对象的属性
属性
status_code HTTP请求的返回状态
text HTTP响应内容的字符串形式,即:url对应的页面内容
encoding 从HTTP header中猜测的响应内容编码方式
apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
content HTTP响应内容的二进制形式
encoding和apparent_encoding的区别
encoding:如果header中不存在charset,则认为编码为ISO-8859-1
apparent_encoding:根据网页内容分析出的编码方式
综上所述,apparent_encoding比encoding更为准确
3.head() 方法
1)作用:通过给定 url 来构造一个向 HTTP 请求资源的 Request 对象
2)返回值:返回一个包含 HTTP 资源的 Response 对象,其包含从 HTTP 返回的所有头部资源
3)格式:requests.head(url, **kwargs)
4.post() 方法
1)作用:向 url 提交新增数据,格式为字典,自动编码为 form(表单)
2)格式:requests.post(url, **kwargs)
5.put() 方法
1)作用:向 url 提交新增数据,格式为字符串,自动编码为 data
2)格式:requests.put(url,, **kwargs)
6.patch() 方法
1)作用:向 url 提交局部修改请求
2)格式:requests.patch(url,, **kwargs)
7.delete() 方法
1)作用:向 url 提交删除请求
2)格式:requests.delete(url, **kwargs)