urllib庫是python3的內置HTTP請求庫。html
ython2中urllib分爲 urllib二、urllib兩個庫來發送請求,可是在python3中只有一個urllib庫,方便了許多。python
urllib庫官方文檔地址:https://docs.python.org/3/library/urllib.html網站
urllib庫包含四個模塊:編碼
request: 最基本的request請求模塊,用來模擬的發送請求url
error: 異常處理模塊用來捕獲異常spa
parse: 提供了許多URL處理方法,好比拆分、解析、合併debug
robotparser: 用來識別網站的robot.txt文件代理
發送請求:request下的urlopen()方法code
import urllib.request url = 'http://xa.meituan.com/meishi/' response = urllib.request.urlopen(url) print(response.read().decode())
獲得的response是一個HTTPResponse類型的對象,包含了 read(), readinto(), getheader(name), getheaders(), fileno()等方法和msg, version, status, debuglevel, closed等屬性。htm
使用urlopen()方法是也能夠傳遞一些參數,如data, timeout 等
data參數:
data是可選參數,若是在請求中想要添加data參數, data參數必須用bytes()將其轉化爲bytes類型,而且,若是傳遞了參數,那麼請求方式就是POST類型(urlopen請求方式默認是get)
import urllib.request import urllib.parse data = bytes(urllib.parse.urlencode({'world':'Hello'}), encoding='utf-8') #傳遞一個data字典,使用bytes方法將data轉爲bytes類型,bytes方法的第一個參數是str,因此使用urllib.parse.urlencode()方法將字典轉爲str,第二個參數是編碼格式 url = 'http://xa.meituan.com/meishi/' response = urllib.request.urlopen(url=url, data=data) print(response.read().decode())
timeout參數:
該參數用於設定超時時間。單位是秒。超時就會拋出異常。
import urllib.request url = 'http://xa.meituan.com/meishi/' response = urllib.request.urlopen(url=url, timeout=1) print(response.read().decode())
其餘參數:
context參數, 必須是ssl.SSLCentext類型, 用來指定SSL設置。
cafile參數和capath參數分別指定CA證書與他的路徑。
request下的Request方法:
Request的構造方法:
urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
import urllib.request url = 'http://xa.meituan.com/meishi/' request = urllib.request.Request(url=url) response = urllib.request.urlopen(request) print(response.read().decode())
origin_req_host: 請求方的host名稱或者IP地址。
unverifiable:表示這個請求是不是沒法驗證的,默認是False,意思是
Handler
urllib,request.BaseHandler類。他是全部Handler的父類。
下面各類子類繼承父類。
HTTPDefaultErrorHandler: 用於處理HTTP請求
HTTPRedirectHandler: 用於重定向。
HTTP Cookie Processor:用於處理Cookies
ProxyHandler:用於設置代理。
HTTPPasswordMgr:用於管理密碼。
HTTPBasicAuthHandler: 用於認證管理。
URL: scheme + netloc + path + parms + query + fragment
協議 域名 訪問路徑 參數 查詢條件 錨點