python學習筆記(十一):網絡編程

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)
相關文章
相關標籤/搜索