Python中urllib.request模塊及和requests的使用區別

一、Python 3.x版本後的urllib和urllib2

在Python 3以後的版本中,urllib2這個模塊已經不單獨存在,urllib2被合併到了urllib中,叫做urllib.request 和 urllib.error 

urllib整個模塊分爲urllib.request,urllib.parse,urllib.error。

例: 
           其中urllib2.urlopen()變成了urllib.request.urlopen() 
           urllib2.Request()變成了urllib.request.Request()

二、urllib和urllib2模塊之間的區別

  1. 在python中,urllib和urllib2不可相互替代的。

  2. 整體來說,urllib2是urllib的增強,但是urllib中有urllib2中所沒有的函數。

  3. urllib2可以用urllib2.openurl中設置Request參數,來修改Header頭。如果你訪問一個網站,想更改User Agent(可以僞裝你的瀏覽器),你就要用urllib2.

  4. urllib支持設置編碼的函數,urllib.urlencode,在模擬登陸的時候,經常要post編碼之後的參數,所以要想不使用第三方庫完成模擬登錄,你就需要使用urllib。

  5. urllib一般和urllib2一起搭配使用

詳細信息參考網址:https://blog.csdn.net/zd147896325/article/details/78957901

三、requests的使用

在我們使用python爬蟲時,更建議用requests庫,因爲requests比urllib更爲便捷,requests可以直接構造get,post請求併發起,而urllib.request只能先構造get,post請求,再發起。

import requests

url='https://www.baidu.com'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
}

get_response = requests.get(url,headers=headers,params=None)

post_response=requests.post(url,headers=headers,data=None,json=None)

print(post_response)

print(get_response.text)

print(get_response.content)

print(get_response.json)

get_response.text得到的是str數據類型。get_response.content得到的是Bytes類型,需要進行解碼。作用和get_response.text類似。get_response.json得到的是json數據。總而言之,requests是對urllib的進一步封裝,因此在使用上顯得更加的便捷。

詳細信息參考網址:https://blog.csdn.net/qq_38783948/article/details/88239109

 

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