标签:标准 保存 ESS 响应 ade 需要 text option 就会
request说明
虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。
Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用:)
Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。
1.发送请求
import requests
url = ‘http://www.baidu.org‘
r = requests.get(url)
print(r.status_code) #获取返回状态
print(r.text)
说明:其他方式的请求格式一致
requests.get(url) #get请求
requests.post(url) #post请求
requests.put(url) #put请求
requests.delete(url) #delete请求
requests.head(url) #head请求
requests.option(url) #get请求
ps:以上的http请求,对于web系统一般只支持get和post,还有一些支持head
|
2. 传递参数
若http请求时带参数,那么就需要将参数加入到payload字典中,如下。
import requests
url = ‘http://www.baidu.org‘
payload = {‘name‘:‘jsan‘}
r = requests.get(url,params= payload)
print(r.status_code) #获取返回状态
print(r.text)
|
3.post请求发送数据
除了get请求外,有时还需要发送一些编码为表单形式的数据。比如在登录的时候请求就为post。若要实现post的请求,只需要简单的传递一个字典给requests中的data参数,这样这个数据字典就会在发出请求的时候自动编码为表单形式。
import requests,json
url = ‘http://www.baidu.org‘
payload = {‘name‘:‘jsan‘}
r = requests.get(url,data = json.dumps(payload))
print(r.status_code) #获取返回状态
print(r.text)
|
4.定制请求头
如果想为请求添加http头部,只需要传一个字典给header就行了。
import requests,json
url = ‘http://httpbin.org/post‘
headers = {‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36‘}
r = requests.get(url,data = json.dumps({‘dt‘:‘data‘}),headers = headers)
print(r.status_code) #获取返回状态
print(r.text)
|
5. 代理(proxies参数)
如果需要使用代理,你可以通过为任意请求方法提供 proxies
参数来配置单个请求:
import requests
# 根据协议类型,选择不同的代理
proxies = {
"http": "http://12.34.56.79:9527",
"https": "http://12.34.56.79:9527",
}
response = requests.get("https://www.baidu.com", proxies = proxies)
print(response.text)
|
6.web客户端验证
如果是Web客户端验证,需要添加 auth = (账户名, 密码)
import requests
from requests.auth import HTTPBasicAuth
r = requests.get(url,auth = HTTPBasicAuth(‘user‘,‘password‘))
r = requests.get(url,auth=(‘user‘,‘password‘)) #简写
|
7.cookie与响应对象
(1)一个响应中包含有一些cookie,可快速访问他们
import requests
response = requests.get("http://www.baidu.com/")
#返回CookieJar对象
cookiejar = response.cookies
# 8. 将CookieJar转为字典:
cookiedict = requests.utils.dict_from_cookiejar(cookiejar)
print(cookiejar)
print(cookiedict)
|
(2)将自身的cookie发送到服务器,用cookie参数
import requests
response = requests.get("http://www.baidu.com/")
#自身的cookie数据
cookiejar = {}
r = requests.get(url=‘http://www.baidu.com‘,cookie = cookiejar)
|
8.sission
在 requests 里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。
会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 。
实现人人网登录
import requests
# 1. 创建session对象,可以保存Cookie值
ssion = requests.session()
# 2. 处理 headers
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"}
# 3. 需要登录的用户名和密码
data = {"email":"mr_mao_hacker@163.com", "password":"alarmchime"}
# 4. 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里
ssion.post("http://www.renren.com/PLogin.do", data = data)
# 5. ssion包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面
response = ssion.get("http://www.renren.com/410043129/profile")
# 6. 打印响应内容
print(response.text)
|
requests模块
标签:标准 保存 ESS 响应 ade 需要 text option 就会
原文地址:https://www.cnblogs.com/wl443587/p/9813461.html