python爬蟲中urllib.request和requests的區別

兩者間主要區別

使用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的進一步封裝,因此在使用上顯得更加的便捷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章