1. 程式人生 > >python爬蟲的urllib與requests的對比

python爬蟲的urllib與requests的對比

 關於爬蟲,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進行了更高階的封裝,不用人為的編碼解碼,將其自動化,