1、訪問網絡的兩種方法git
1.get:利用參數給服務器傳遞信息;參數爲dict,而後parse解碼github
2.post:通常向服務器傳遞參數使用;post是把信息自動加密處理;若是想要使用post信息,須要使用到data參數json
3.Content-Type:application/x-www.form-urlencode瀏覽器
4.Content-Length:數據長度服務器
5.簡而言之,一旦更改請求方法,請注意其餘請求頭信息相適應微信
6.urllib.parse.urlencode能夠將字符串自動轉換爲上面的信息。網絡
案例:利用parse模塊模擬post請求分析百度翻譯:分析步驟:app
(1)打開谷歌瀏覽器,F12函數
(2)嘗試輸入單詞girl,發想每敲擊一個字母后都會有一個請求post
(3)請求地址是:http://fanyi.baidu.com/sug
(4)打開network-XHR-sug
from urllib import request,parse #負責處理json格式的模塊 import json """ 大體流程: (1)利用data構造內容,而後urlopen打開 (2)返回一個json格式的結果 (3)結果就應該是girl的釋義 """ baseurl = "https://fanyi.baidu.com/sug" #存放迎來模擬form的數據必定是dict格式 data = { #girl是翻譯輸入的英文內容,應該是由用戶輸入,此處使用的是硬編碼 "kw":"girl" } #須要使用parse模塊對data進行編碼 data = parse.urlencode(data).encode("utf-8") #咱們須要構造一個請求頭,請求頭應該至少包含傳入的數據的長度 #request要求傳入的請求頭是一個dict格式 headers = { #由於使用了post,至少應該包含content-length字段 "Content-length":len(data) } #有了headers,data,url就能夠嘗試發出請求了 rsp = request.urlopen(baseurl,data=data)#,headers=headers json_data = rsp.read().decode() print(json_data) #把json字符串轉化爲字典 json_data = json.loads(json_data) print(json_data) for item in json_data["data"]: print(item["k"],"--",item["v"])
2、爲了更多的設置請求信息,單純的經過urlopen函數已經不太好用了;須要利用request.Request類
這裏只修改一部分代碼,其餘的代碼都不變,依然能夠獲得相同的結果。
#構造一個Request的實例,就是借用這個類,來把可以傳入的頭信息進行封裝擴展 req = request.Request(url=baseurl,data=data,headers=headers) #有了headers,data,url就能夠嘗試發出請求了 rsp = request.urlopen(req)#,headers=headers
3、源碼
Reptile3_PostAnlysis.py
https://github.com/ruigege66/PythonReptile/blob/master/Reptile3_PostAnlysis.py
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料