1、python操做網絡,也就是打開一個網站,或者請求一個http接口,使用urllib模塊。python
urllib模塊是一個標準模塊,直接import urllib便可,在python3裏面只有urllib模塊,在python2裏面有urllib模塊和urllib2模塊。json
import json from urllib import request from urllib import parse pay_url = 'http://szz.nnzhp.cn/pay' balance_url = 'http://szz.nnzhp.cn/get_balance' balance_data = {'user_id':1} new_balance_data = parse.urlencode(balance_data)#把請求參數變成xx=11這樣的 balance_req = request.urlopen(balance_url+'?'+new_balance_data)#發送get請求 print(balance_req.read().decode()) #獲取接口返回的結果,返回的結果是bytes類型的,須要使用decode方法解碼,變成一個字符串 pay_data ={"user_id":1,"price":"999"} new_pay_data = parse.urlencode(pay_data)#把請求參數變成xx=11這樣的 pay_req = request.urlopen(pay_url,new_pay_data.encode())#發送post請求,傳入參數的話 #參數必須是bytes類型,因此須要先encode一下,變成bytes類型 print(pay_req.read().decode())#獲取接口返回的結果,返回的結果是bytes類型的 #須要使用decode方法解碼,變成一個字符串 res = json.loads(pay_req.read().decode()) #由於返回的是一個json傳,想把json串轉成字典的話,久使用json模塊轉成一個字典 print(res)
2、上面是使用python自帶的urllib模塊去請求一個網站,或者接口,可是urllib模塊太麻煩了,傳參數的話,都得是bytes類型,返回數據也是bytes類型,還得解碼,想直接把返回結果拿出來使用的話,還得用json,發get請求和post請求,也不通,使用比較麻煩,還有一個比較方便的模塊,比urllib模塊方便不少,就是requests模塊,它使用比較方便,須要安裝,pip install requests便可,下面是requests模塊的實例api
import requests pay_url = 'http://szz.nnzhp.cn/pay' balance_url = 'http://szz.nnzhp.cn/get_balance' balance_data = {'user_id':1} pay_data ={"user_id":1,"price":"999"} balance_res = requests.get(balance_url,balance_data).text #發送get請求,並獲取返回結果,text獲取的結果是一個字符串 print(balance_res) balance_res = requests.get(balance_url,balance_data).json() #發送get請求,並獲取返回結果,json()方法獲取的結果直接是一個字典 print(balance_res) pay_res = requests.post(pay_url,pay_data).json()#調用post方法 print(pay_res) #====入參是json串的==== url = 'http://api.nnzhp.cn/getmoney' data = {"userid":1} res = requests.post(url,json=data).json()#指定入參json print(res) #======添加cookie===== url = 'http://api.nnzhp.cn/setmoney2' data = {'userid':1,"money":9999} cookie = {'token':"token12345"} res = requests.post(url,data,cookies=cookie).json()#使用cookies參數指定cookie print(res) #=====添加權限驗證===== url = 'http://api.nnzhp.cn/setmoney' data = {'userid':1,"money":91999} res = requests.post(url,data,auth=('admin','123456')).json() #使用auth參數指定權限驗證的帳號密碼,auth傳的是一個元組 print(res) #======發送文件===== url = 'http://api.nnzhp.cn/uploadfile' res = requests.post(url,files={'file':open('api11.py')}).json() #指定files參數,傳文件,是一個文件對象 print(res) #=====發送header====== url = 'http://api.nnzhp.cn/getuser2' data = {'userid':1} header = {'Content-Type':"application/json"} res = requests.post(url,headers=header).json() #指定headers參數,添加headers print(res)