request库

0x00  环境简介和安装


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

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

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

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

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

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

【Python】【亲测好用】安装第三方包报错:AttributeError:'module' object has no attribute 'main'

0x01  使用requests


请求方法

    • GET:     查看资源
    • POST:             增加资源
    • PUT:     修改资源
    • DELETE:         删除资源
    • HEAD:             查看响应头
    • patch:              局部更新url资源

 基本用法: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) #以字节流形式打印

request的可选参数

1.param

2.data

3.json

4.headers

5.cookies、auth

6.files

7.timeout

8.proxies

9.allow_redirects、stream、verify、cert

带参数的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')

 Response的方法

原文地址:https://www.cnblogs.com/Ragd0ll/p/10226382.html