我们在做自动化运维的时候,经常需要调用api中的接口,不过很多人不知道具体的调用方法,在学习python中的requests库后,我们就可以很轻松的实现了。" B; }' ]0 o$ e% ^
1、说明8 f8 b6 ~1 V! o+ s! _
api接口调用是指使用python的requests库进行访问,基本上是get或post请求,有些接口会加密,然后必须使用对方提供给我们的公钥加密或解密,配上相应的参数进行访问,我们所需要的数据在请求后的返回结果中,所看到的基本上都是json格式的解析,所以请求后可以使用requests自带的json函数进行解析,然后提取所需的数据,访问一次就能得到一个数据。
" h2 R# `5 z9 B( a2 Z0 I2、实例 a& y7 i2 Y U1 ]# u
- # encoding: utf-8
- import requests
- import os,re
- import urllib.request
-
- data={"email":"xxxxxx@qq.com", "password":"********"}
- session = requests.session()
- session.post("http://www.renren.com/PLogin.do",data= data,verify = False)
- response =session.get("http://www.renren.com/410043129/profile")
- print (response.text)
- print (response.url)
- print (response.status_code)
- print (response.headers)
-
- #爬网页图片:
-
- requset=requests.post("http://tieba.baidu.com/p/4114581614",verify = False)
-
- r=r'src="(http://imgsrc.baidu.com/.*?\.jpg)"'
- #r=r'http://imgsrc.baidu.com/.+?\.jpg'
- mylist=re.findall(r,str(requset.text))
- print (mylist)
- j=0
- for i in mylist:
- urllib.request.urlretrieve(i, "C:/Users/Administrator/Desktop/img1/"+str(j)+".jpg")
- j+=1
实例代码扩展: / J/ b) s2 g4 U9 S% R
- # coding:utf-8
- import json
- from urlparse import parse_qs
- from wsgiref.simple_server import make_server
- # 定义函数,参数是函数的两个参数,都是python本身定义的,默认就行了。
- def application(environ, start_response):
- # 定义文件请求的类型和当前请求成功的code
- start_response('200 OK', [('Content-Type', 'text/html')])
- # environ是当前请求的所有数据,包括Header和URL,body,这里只涉及到get
- # 获取当前get请求的所有数据,返回是string类型
- params = parse_qs(environ['QUERY_STRING'])
- # 获取get中key为name的值
- name = params.get('name', [''])[0]
- no = params.get('no', [''])[0]
- # 组成一个数组,数组中只有一个字典
- dic = {'name': name, 'no': no}
- return [json.dumps(dic)]
- if __name__ == "__main__":
- port = 5088
- httpd = make_server("0.0.0.0", port, application)
- print "serving http on port {0}...".format(str(port))
- httpd.serve_forever()
|