python Requests库

中文参考文档:
https://2.python-requests.org//zh_CN/latest/index.html

简介
Requests Python编写,基于 urllib,自称 HTTP for Humans(让HTTP 服务人类)
特性:支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URLPOST 数据自动编码。 使用更简洁方便,比 urllib 更加 Pythoner

安装

pip install requests 

基本GET请求

import requests 


response = requests.get("http://www.baidu.com/") 
# 也可以这么写 
#response = requests.request("get", "http://www.baidu.com/") 

# 查看响应内容,response.content 返回的字节流数据 
print(response.content) 
print(response.content.decode('utf8')) 

# 查看响应内容,response.text 返回的是 Unicode 格式的数据 
print(response.text) 

# 查看完整 url 地址 
print(response.url) 

# 查看响应头部字符编码 
print(response.encoding) 

# 查看响应码 
print(response.status_code) 


添加 headers 和 查询参数
如果想添加 headers,可以传入headers参数来增加请求头中的headers信息。如果要将参数放在url中传递,可以利用 params 参数。

import requests 

kw = {'wd':'长城'} 
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("http://www.baidu.com/s?", params = kw, headers = headers) 

print(response.text) 
print(response.encoding) 


基本POST请求(data参数)
1、 最基本的GET请求可以直接用post方法 。

response = requests.post("http://www.baidu.com/", data = data) 

2、传入data数据 。
对于 POST 请求来说,一般需要为它增加一些参数。可以利用 data 参数传参。

示例:

import requests 


if __name__ == "__main__": 

	# 对应上图的 Request URL 
	# Request_URL = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule' 
	Request_URL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' 
	
	# 创建 Form_Data 字典,存储上图的 Form Data 
	Form_Data = {} 
	Form_Data['i'] = 'Tom' 
	Form_Data['from'] = 'AUTO' 
	Form_Data['to'] = 'AUTO' 
	Form_Data['smartresult'] = 'dict' 
	Form_Data['client'] = 'fanyideskweb' 
	Form_Data['salt'] = '1526796477689' 
	Form_Data['sign'] = 'd0a17aa2a8b0bb831769bd9ce27d28bd' 
	Form_Data['doctype'] = 'json' 
	Form_Data['version'] = '2.1' 
	Form_Data['keyfrom'] = 'fanyi.web' 
	Form_Data['action'] = 'FY_BY_REALTIME' 
	Form_Data['typoResult'] = 'false' 
	
	# 写入 User Agent 信息 
	head = {} 
	head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36' 
	response = requests.post(Request_URL, data=Form_Data,headers=head) 
	
	print(response) 
	print(response.text) 
	translate_results = response.json() 
	# 找到翻译结果 
	translate_results = translate_results['translateResult'][0][0]['tgt'] 
	# 打印翻译信息 
	print("翻译的结果是:%s" % translate_results) 
	
	
	
	

代理(proxies 参数)

如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:

import requests 


# 根据协议类型,选择不同的代理 

proxies = {   
	"http": "http://27.184.124.29:8118", 
	} 

response = requests.get("http://www.baidu.com", proxies = proxies) 
print(response.text) 

Cookies 和 Sission

1、Cookies
如果一个响应中包含了cookie,那么我们可以利用 cookies参数拿到。

import requests 

response = requests.get("https://www.baidu.com/") 

# 返回 CookieJar 对象
cookiejar = response.cookies 
print(cookiejar)

# 将 CookieJar 转为字典
cookiedict = requests.utils.dict_from_cookiejar(cookiejar) 
print(cookiedict) 


2、Sission
requests 里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。

会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 。

示例:

import requests 


# 创建 session 对象,可以保存 Cookie 值 
ssion = requests.session() 

# 处理 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"} 

#  需要登录的用户名和密码 
data = {"email":"123@163.com", "password":"123"} 

# 发送附带用户名和密码的请求,并获取登录后的 Cookie 值,保存在 ssion 里 
ssion.post("http://www.renren.com/PLogin.do", data = data) 

# ssion 包含用户登录后的 Cookie 值,可以直接访问那些登录后才可以访问的页面 
response = ssion.get("http://www.renren.com/410043129/profile") 

# 打印响应内容 
print(response.text) 


处理HTTPS请求 SSL证书验证

Requests也可以为HTTPS请求验证SSL证书:
要想检查某个主机的SSL证书,你可以使用 verify 参数(也可以不写)

示例:

import requests 


response = requests.get("https://www.baidu.com/", verify=True) 
# 也可以省略不写 
# response = requests.get("https://www.baidu.com/") 
print(response.text) 

如果SSL证书验证不通过,或者不信任服务器的安全证书,则会报出SSLError,比如12306:

import requests 

response = requests.get("https://www.12306.cn/mormhweb/") 
print(response.text) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值