兩者間主要區別
使用urllin內的request模塊是,返回體獲取有效信息和請求體的拼接需要decode和encode後再進行裝載。進行http請求時需先構造get或者post請求再進行調用。header等頭文件也需先進行構造。
requests庫中進一步封裝了request模塊,http請求時只需要調用對應的requests.method方法,就可以很方便的使用。
總體來說,requests比urllib.request方法更方便。但如模擬用戶登陸等情況下,使用urllib自定義定製http請求也是必不可少的
urllib.request
導入方法
from urllib import request
import urllib.request
內容
urlopen()方法能發起最基本對的請求發起,在不需要任何其他參數配置的時候,可直接通過urlopen()方法來發起一個簡單的web請求。但僅僅這些在我們的實際應用中一般都是不夠的,可能我們需要加入headers之類的參數,那需要用功能更爲強大的Request類來構建了。
urllib庫的response對象是先創建httprequest對象,裝載到reques.urlopen裏完成http請求,返回的是httpresponse對象,實際上是html屬性,使用.read().decode()解碼後轉化成了str字符串類型,也可以看到decode解碼後中文字符能夠顯示出來
requests
通常而言,在我們使用python爬蟲時,更建議用requests庫,因爲requests比urllib更爲便捷,requests可以直接構造get,post請求併發起,而urllib.request只能先構造get,post請求,再發起。
導入方法
import requests
內容
requests庫調用是requests.get方法傳入url和參數,返回的對象是Response對象,打印出來是顯示響應狀態碼,通過.text 方法可以返回是unicode 型的數據,一般是在網頁的header中定義的編碼形式。
get_response.text得到的是str數據類型。
get_response.content得到的是Bytes類型,需要進行解碼。作用和get_response.text類似。
get_response.json得到的是json數據。
requests是對urllib的進一步封裝,因此在使用上顯得更加的便捷。