Python3爬蟲一之(urllib庫)

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

            協議         域名   訪問路徑   參數    查詢條件     錨點

相關文章
相關標籤/搜索