1. 程式人生 > >python基礎:網絡編程

python基礎:網絡編程

admin net DC AC class 第三方模塊 mp3 baidu del

一、網絡編程

簡而言之,就是通過代碼打開一個url,獲得返回結果並做處理。通常所說的python爬蟲,就屬於網絡編程

二、urllib模塊進行網絡編程

這個方法很繁瑣,不建議使用。了解

示例1:

獲取一個網頁內容,寫入文件

from urllib import request,parse
# url = ‘http://www.baidu.com‘
# req = request.urlopen(url)  #打開一個url,發get請求
# content = req.read().decode() #獲取返回結果,是二進制,需要先decode()
# fw = open(‘baidu.html‘,‘w‘,encoding=‘utf-8‘)
# fw.write(content)

示例2:

獲取接口返回結果,做判斷

from urllib import request,parse#導入urllib模塊的request和parse
import json
# url=‘http://127.0.0.1/api/user/stu_info?stu_name=aaa‘eq = request.urlopen(url)  #打開一個url,發get請求
# content = req.read().decode() #獲取返回結果,二進制,要先解二進制decode()為字符串
# res_dic = json.loads(content) #返回的結果轉成字典
# if res_dic.get(‘error_code‘) == 0: # print(‘測試通過‘) # else: # print(‘測試失敗‘,res_dic)

示例3:

有參數傳入時,用parse拼接參數,請求url,獲取結果

from urllib import request,parse
url = http://api.nnzhp.cn/api/user/login
data = {
    username:admin,
    passwd:aA123456
} #請求數據,寫成字典格式
data = parse.urlencode(data)  #
urlencode,自動給你拼好參數 # xx=xx&xx=11 req = request.urlopen(url,data.encode()) #發post請求 print(req.read().decode())

以上看到urllib的用法先對比較麻煩,一步一步操作,必須先打開url,在傳入參數,對返回的結果還要在進行處理。

requesets模塊已經很好地將這幾步封裝。用起來更方便

三、requests

這個模塊屬於第三方模塊,需要安裝導入。pip install requests

示例1:

發送get請求url

1、發get請求
url = http://127.0.0.1/api/user/stu_info
data = {stu_name:aaa}  #請求數據,用字典
req = requests.get(url,params=data)  #發get請求,直接寫入參數url,和傳參data即可自動訪問網址,並返回數據。註意:get請求的傳參必須用格式  params=參數
#req返回的結果,是一個requests.models.Response對象
print(req.json()) #可以把返回數據轉換成字典 print(req.text) #把返回數據轉換成string,json串

示例2:

發送post請求

url = http://127.0.0.1/api/user/login
data = {username:‘aaa,passwd:123456}  #請求數據,字典封裝
req = requests.post(url,data)  #發送post請求,可直接傳入參數data,不用寫params
print(req.json())#將結果轉換成字典

示例3:

入參就是json格式

url=http://127.0.0.1/api/user/add_stu
data =  {
    "name":"小1",
    "grade":"天蠍座",
    "phone":13640000000,
    "sex":"",
    "age":28,
    "addr":"發斯蒂芬斯蒂芬"
  }#參數,json串
req = requests.post(url,json=data)#入參是json,在傳入參數時要指定  json=參數
print(req.json())

示例4:

帶有cookie的post請求

url = http://127.0.0.1/api/user/gold_add
data = {stu_id:468,gold:10000}
djl = {aaa:337ca4cc825302b3a8791ac7f9dc4bc6}
req = requests.post(url,data,cookies=djl)#入參帶有cookie,在傳入參數時,指定  cookies=參數
print(req.json())

示例5:

帶有header的get請求

url = http://127.0.0.1/api/user/all_stu
header = {
    Referer:http://127.0.0.1/
}
req = requests.get(url,headers=header)#指定  headers=參數
print(req.json())

示例6:

需要上傳文件的請求

url= http://127.0.0.1/api/file/file_upload
data = {
    file:open(rC:\Users\bjniuhanyang\Desktop\圖\6bd9026dt935575932465&690.jpg,rb)
}#參數,如果上傳的是個其他文件,則後面的rb可不寫。因為上傳的圖片會以二進制形式保存,用rb表示讀二進制模式。當然如果下載一個文件,則用wb
req= requests.post(url,files=data)#指定 files=參數
print(req.json())

示例7:

下載文件

url = http://up.mcyt.net/?down/46779.mp3#要下載文件的url
req = requests.get(url)
fw = open(aaa.mp3,wb)#mp3格式也是用二進制保存,所以用wb寫二進制模式,將對應文件的內容讀取到
fw.write(req.content)#將讀取到的內容寫到一個文件中。這個文件內容就是下載的文件內容。

python基礎:網絡編程