request库

Posted ragd0ll

tags:

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

0x00  环境简介和安装


我这里使用的是python2.7版本,直接使用pycharm2018这款IDE。

首先在pycharm中配置一下virtualenv环境,virtualenv是一个创建独立Python运行环境的工具,为一个应用创建一套“隔离”的Python运行环境。

创建new project时选择创建新的环境,修改你们自己的目录,如果主机内有多个版本的python解释器可自行选择

技术分享图片

 

创建完成后可以在项目中安装requests库,file-settings打开如下界面

技术分享图片

 

单击右上角绿色加号,搜索requests并install

技术分享图片

这里如果你的pip版本大于等于10,安装的时候会报错,原因是由于新版pip的函数发生了变化,解决办法参考这个帖子

 

0x01  使用requests

 


 

请求方法

    • GET:     查看资源
    • POST:             增加资源
    • PUT:     修改资源
    • DELETE:         删除资源
    • HEAD:             查看响应头
    • OPTIONS:       查看可用请求方法

 基本用法:requests.[methon](url)

import requests

response = requests.get(https://www.cnblogs.com/Ragd0ll/p/10176258.html)
print(response.status_code)  # 打印状态码
print(response.url)          # 打印请求url
print(response.headers)      # 打印头信息
print(response.cookies)      # 打印cookie信息
print(response.text)  #以文本形式打印网页源码
print(response.content) #以字节流形式打印

带参数的get请求:

第一种直接将参数放在url内

import requests

response = requests.get(http://httpbin.org/get?name=gemey&age=22)
print(response.text)

第二种是将参数放入字典,然后在请求时给params参数赋值

import requests

data = {
    name: tom,
    age: 20
}

response = requests.get(http://httpbin.org/get, params=data)
print(response.text)

两段代码的结果相同

基本POST请求:

 

import requests

data = {name:tom,age:22}

response = requests.post(http://httpbin.org/post, data=data)

 

 

 

简单保存一个二进制文件

import requests

response = requests.get(https://img2018.cnblogs.com/blog/1342178/201812/1342178-20181225201042109-1353349536.png)
b = response.content
with open(F://fengjing.jpg,wb) as f:
    f.write(b)

为你的请求添加头信息

 

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(https://home.cnblogs.com/u/Ragd0ll/,headers=headers)

 

获取cookie

 

import requests

response = requests.get(https://home.cnblogs.com/u/Ragd0ll/)
print(response.cookies)
print(type(response.cookies))
for k,v in response.cookies.items():
    print(k+:+v)

 

会话维持

 

import requests

session = requests.Session()
session.get(http://httpbin.org/cookies/set/number/12345)
response = session.get(http://httpbin.org/cookies)
print(response.text)

 

证书验证设置

 

import requests
from requests.packages import urllib3

urllib3.disable_warnings()  #从urllib3中消除警告
response = requests.get(https://www.12306.cn,verify=False)  #证书验证设为FALSE
print(response.status_code)

 

超时异常捕获

 

import requests
from requests.exceptions import ReadTimeout

try:
    res = requests.get(http://httpbin.org, timeout=0.1)
    print(res.status_code)
except ReadTimeout:
    print(timeout)

 

异常处理

 

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)

 


以上是关于request库的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Chrome-Devtools代码片段中的多个JS库

java 怎么接收第三方传过来的xml

Xamarin Android 片段库

推进学说代码片段