1. 程式人生 > >Python3 urllib 庫

Python3 urllib 庫

read style cookielib readlines 錯誤 處理 timeout serve 我們

  1. urllib 簡介
  2. urllib 基礎模塊
  3. 使用 urllib 發送請求
  4. 使用 urllib 進行身份驗證
  5. 使用 urllib 設置代理服務器
  6. 使用 urllib 處理 Cookies
  7. 使用 urllib 處理異常
  8. 使用 urllib 解析鏈接
  9. 使用 urllib 分析 Robots 協議

1. urllib 簡介

(1) urllib 是 Python 內置的 HTTP 請求庫,用來向服務器發送 HTTP 請求
(2) 在 Python2.x 中,有 urllib 和 urllib2 兩個模塊;在 Python3.x 中,urllib2 合並到了 urllib 中


(3) 在 Python2.x 中使用 import urllib, urllib2 ;在 Python3.x 中使用 import urllib
(4) 在 Python2.x 中使用 urllib2.urlopen ;在 Python3.x 中使用 urllib.request.urlopen
(5) 在 Python2.x 中使用 urllib2.Request ;在 Python3.x 中使用 urllib.request.Request
(6) 在 Python2.x 中使用 urllib.quote ;在 Python3.x 中使用 urllib.request.quote
(7) 在 Python2.x 中使用 cookielib.CookieJar ;在 Python3.x 中使用 http.CookieJar

(8) 在 Python2.x 中使用 urllib.urlencode ;在 Python3.x 中使用 urllib.parse.urlencode

2. urllib 基礎模塊

(1) urllib.request:最基本的HTTP請求模塊,用來模擬發送請求,就像在瀏覽器裏輸入網址然後回車一樣
(2) urllib.error:異常處理模塊,如果出現請求錯誤,我們可以捕獲這些異常,然後進行重試或其他操作以保證程序不會意外終止

(3) urllib.parse:一個工具模塊,提供了許多 URL 處理方法,比如拆分、解析、合並等
(4) urllib.robotparser:主要是用來識別網站的 robots.txt 文件,然後判斷哪些網站可以爬,哪些網站不可以爬,它其實用得比較少

3. 使用 urllib 發送請求

使用 urllib 的 request 模塊提供了最基本的構造HTTP請求的方法,使用它可以實現請求的發送並得到相應,常用方法如下:

(1) urllib.request.urlopen(url, data=None, timeout=n) 用於發送HTTP請求並得到相應

In [1]: import urllib.request                                                                                                                                                                
In [2]: response = urllib.request.urlopen("http://www.baidu.com/")    //發送HTTP請求
In [3]: response.read().decode(utf-8)    //read()方法用於獲取響應內容,readline(),readlines()也可以
In [4]: response.status                    //status屬性用於獲取響應狀態碼
In [5]: response.getcode()                 //getcode()方法用於獲取響應狀態碼
In [6]: response.geturl()                  //geturl()方法用於獲取請求的源地址
In [7]: response.getheaders()              //getheaders()方法用於獲取響應頭信息
In [8]: response.getheader(Server)       //getheader()方法用於獲取指定的響應頭信息


(2) urllib.request.Request()

Python3 urllib 庫