VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Python之Requests模块使用详解(2)

由于发送json格式数据太常见了,所以在Requests模块的高版本中,又加入了json这个关键字参数,可以直接发送json数据给post请求而不用再使用json模块了,见下:

1
2
>>> payload = {"key":"value"}
>>> r = requests.post("http://pythontab.com/postTest", json=payload)

如果我们想post一个文件怎么办呢?这个时候就需要用到files参数了:

1
2
3
4
>>> url = 'http://pythontab.com/postTest'
>>> files = {'file'open('report.xls''rb')}
>>> r = requests.post(url, files=files)
>>> r.text

我们还可以在post文件时指定文件名等额外的信息:

1
2
3
>>> url = 'http://pythontab.com/postTest'
>>> files = {'file': ('report.xls'open('report.xls''rb'), 'application/vnd.ms-excel', {'Expires''0'})}
>>> r = requests.post(url, files=files)

tips:强烈建议使用二进制模式打开文件,因为如果以文本文件格式打开时,可能会因为“Content-Length”这个header而出错。

 

可以看到,使用Requests发送请求简单吧!

三、获取返回信息

下面我们来看下发送请求后如何获取返回信息。我们继续使用最上面的例子:

1
2
3
>>> import requests
>>> r=requests.get('http://pythontab.com/justTest')
>>> r.text

r.text是以什么编码格式输出的呢?

1
2
>>> r.encoding
'utf-8'

原来是以utf-8格式输出的。那如果我想改一下r.text的输出格式呢?

1
>>> r.encoding = 'ISO-8859-1'

这样就把输出格式改为“ISO-8859-1”了。

还有一个输出语句,叫r.content,那么这个和r.text有什么区别呢?r.content返回的是字节流,如果我们请求一个图片地址并且要保存图片的话,就可以用到,这里举个代码片段如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def saveImage( imgUrl,imgName ="default.jpg" ):
    = requests.get(imgUrl, stream=True)
    image = r.content
    destDir="D:\"
    print("保存图片"+destDir+imgName+"\n")
    try:
        with open(destDir+imgName ,"wb") as jpg:
            jpg.write(image)     
            return
    except IOError:
        print("IO Error")
        return
    finally:
        jpg.close

相关教程