requests模块

Posted wl443587

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了requests模块相关的知识,希望对你有一定的参考价值。

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":"[email protected]", "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模块的主要内容,如果未能解决你的问题,请参考以下文章

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

如何有条件地将 C 代码片段编译到我的 Perl 模块?

推进学说代码片段