python爬蟲的urllib與requests的對比
阿新 • • 發佈:2018-12-31
關於爬蟲,python中就有很多相關的包,今天我們就來介紹一下urllib與requests的區別,以爬取百度翻譯為例,首先我們訪問百度翻譯,F12,瞭解到使用的方法為post,好了不多說了上程式碼
###urllib
from urllib import request,parse import json if __name__ == '__main__': while True: baseurl = 'http://fanyi.baidu.com/sug' keyword = input('請輸入你要查詢的單詞:') data = { 'kw': keyword } data = parse.urlencode(data).encode() # 需要給資料編碼,現在data是bytes格式, #除錯用的的話可以輸入以下程式碼(已註釋) #data = parse.urlencode(data) #print(data) rsp = request.urlopen(baseurl, data=data) json_data = rsp.read().decode()#解碼後的資料是json格式,所以要import json #print(json_data) json_data = json.loads(json_data) for i in json_data['data']: print(i['k'], '---->', i['v'])
-------------------------------------------------------------------------------------------------------------------------------------------------------------
#####requests
import requests if __name__ == '__main__': while True: baseurl = 'http://fanyi.baidu.com/sug' keyword = input('請輸入你要查詢的單詞:') data = { 'kw': keyword } #這裡不用給data進行編碼 #但是下面要指明post方法 #rsp=requests.request('post',url=baseurl,data=data) #上下兩程式碼等價 rsp = requests.post(url=baseurl, data=data) #而這裡也不用匯入 json模組,直接使用物件的json()方法即可 json_data = rsp.json() for i in json_data['data']: print(i['k'], '---->', i['v']) 總的來說,requests將urlib進行了更高階的封裝,不用人為的編碼解碼,將其自動化,