一、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模塊之間的區別
-
在python中,urllib和urllib2不可相互替代的。
-
整體來說,urllib2是urllib的增強,但是urllib中有urllib2中所沒有的函數。
-
urllib2可以用urllib2.openurl中設置Request參數,來修改Header頭。如果你訪問一個網站,想更改User Agent(可以僞裝你的瀏覽器),你就要用urllib2.
-
urllib支持設置編碼的函數,urllib.urlencode,在模擬登陸的時候,經常要post編碼之後的參數,所以要想不使用第三方庫完成模擬登錄,你就需要使用urllib。
-
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