Python3 urllib庫學習
python3將python2的urllib和urllib2庫整合為一個urllib庫,由於近期用到了這個庫就參考官方文件和網上的資料總結了一下
匯入
import urllib
urllib.request
urllib.request.urlopen()
發起一個請求
response = urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
# url 要開啟的網址,可以是字串或者是request物件
# data 要傳送給伺服器的資料(POST方法)
# timeout 網站的訪問超時時間,單位為s
# cafile和capath 用於HTTPS請求中,設定CA證書及其路徑
返回物件提供的方法
read() , readline() ,readlines() , fileno() , close() :對HTTPResponse型別資料進行操作
info():返回HTTPMessage物件,表示遠端伺服器返回的頭資訊
getcode():返回Http狀態碼。如果是http請求,200請求成功完成;404網址未找到
geturl():返回請求的url
返回物件的屬性
對於HTTP 和 HTTPS請求
- status 返回狀態碼
- reason 返回狀態的詳細資訊
urllib.request.Request()
使用該方法來返回一個request物件
request = urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
# url 包含網址的字串
# data 要傳送給伺服器的資料物件,對於POST請求,要通過urllib.parse.urlencode() 方法進行編碼
# header 頭部資訊,必須為字典型別
# method 請求方法,如果data為None則為GET,否則為POST
頭部資訊示例
headers = {
'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3',
'Referer': r'http://www.lagou.com/zhaopin/Python/?labelWords=label',
'Connection': 'keep-alive'
}
User-Agent :這個頭部可以攜帶如下幾條資訊:瀏覽器名和版本號、作業系統名和版本號、預設語言
Referer:可以用來防止盜鏈,有一些網站圖片顯示來源http://*.com,就是檢查Referer來鑑定的
Connection:表示連線狀態,記錄Session的狀態。
也可以通過返回的request物件的 add_header(key, val) 方法來新增header資訊
request.add_header('Origin', 'https://passport.weibo.cn')
request.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
request.add_header('Referer', 'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F')
urllib.request.ProxyHandler()
使用同一個IP去爬取同一個網站上的網頁,久了之後會被該網站伺服器遮蔽。使用代理伺服器。 (使用代理伺服器去爬取某個網站的內容的時候,在對方的網站上,顯示的不是我們真實的IP地址,而是代理伺服器的IP地址)
urllib.request.ProxyHandler(proxies=None)
data = {
'name': 'zjw',
'age': 23,
'gender': 'male'
}
proxy = request.ProxyHandler({'http': '5.22.195.215:80'}) # 設定proxy
opener = request.build_opener(proxy) # 掛載opener
request.install_opener(opener) # 安裝opener
data = parse.urlencode(data).encode('utf-8')
page = opener.open(url, data).read()
page = page.decode('utf-8')
return page
urllib.request.urlretrieve()
將遠端資料下載到本地,例如下載圖片
urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)
#返回由檔名及頭部資訊組成的元組(filename, headers)
#url 遠端資料的地址
#filename 儲存檔案的路徑,如果為空,則下載為臨時檔案
#reporthook 鉤子函式 連線伺服器成功以及每個資料塊下載完成時各呼叫一次,包含3個引數,依次為已經下載的資料塊,資料塊的大小,總檔案的大小,可用於顯示下載進度
#data post到伺服器的資料
urllib.parse
urllib.parse.urlencode()
將包含字串或位元組內容的對映物件或二維元組序列轉換為ASCII文字字元
urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus)
其轉換結果用於POST操作時,還需將其編碼為位元組
data = {
'name': 'zjw',
'age': 23,
'gender': 'male'
}
data = urllib.parse.urlencode(data).encode('utf-8')
#經編碼後結果為 b'name=zjw&age=23&gender=male'
#返回結果需解碼
response = request.urlopen(url, data=data).read().decode('utf-8')
urllib.parse.parse_qs()
將返回的query字串轉換為字典
urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')
# 例如 {b'name':[b'zjw'],b'age':[b'23'],b'gender':[b'male']}
urllib.parse.parse_qsl()
將返回的query字串轉換為包含二維元組的列表
urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')
# 例如 [(b'name',b'zjw'),(b'age',b'23'),(b'gender',b'male')]
urllib.error
錯誤:
urllib.error.URLError
urllib.error.HTTPError
urllib.error.ContentTooShortError
當urlretrieve()方法下載資料的大小小於實際期望值時觸發該錯誤
處理:
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
req = Request('http://www.python.org/')
try:
response = urlopen(req)
except HTTPError as e:
print('The (www.python.org)server could not fulfill the request.')
print('Error code: ', e.code)
except URLError as e:
print('We failed to reach a server.')
print('Reason: ', e.reason)
else:
print("good!")
print(response.read().decode("utf8"))
相關推薦
Python3 urllib庫學習
python3將python2的urllib和urllib2庫整合為一個urllib庫,由於近期用到了這個庫就參考官方文件和網上的資料總結了一下 匯入 import urllib urllib.request urllib.reque
Python3 Urllib庫的基本使用
一、什麼是Urllib Urllib庫是Python自帶的一個http請求庫,包含以下幾個模組: urllib.request 請求模組 urllib.error 異常處理模組 urllib.parse url解析
Python3 Urllib庫
一.什麼是Urllib庫 urllib是python標準庫,就是你安裝了python,這兩個庫就已經可以直接使用了; 它包括以下模組:urllib.request 請求模組 urllib.error 異常處理模組 urllib.parse url解析模組 urllib.robotparser r
Python3 urllib庫和requests庫
1. Python3 使用urllib庫請求網路 1.1 基於urllib庫的GET請求 請求百度首頁www.baidu.com ,不新增請求頭資訊: 1 import urllib.requests 2 3 4 def get_page(): 5
python-urllib庫學習筆記
import urllib.request, urllib.parse ''' urllib常用的請求語句 ''' url = '' # 傳送請求 res = urllib.request.urlopen(url=url) # 讀取請求到的內容 res.read().de
Python3 urllib 庫
read style cookielib readlines 錯誤 處理 timeout serve 我們 urllib 簡介 urllib 基礎模塊 使用 urllib 發送請求 使用 urllib 進行身份驗證 使用 urllib 設置代理服務器 使用 u
urllib庫的學習總結(python3網路爬蟲開發實戰專案)
urllib庫是python內建的HTTP請求庫,包含以下四個模組: request:最基本的HTTP請求模組,可以用來模擬傳送請求。只需要給庫方法傳入URL以及額外的引數,就可以模擬實現這個過程了。 error:異常處理模組,如果出現請求錯誤,我們可以捕獲這些異常,然後進行重試或其
Python3爬蟲學習筆記(1.urllib庫詳解)
1.什麼是爬蟲:略,到處都有講解。 雖然是入門,不過沒有Python基礎的同學看起來可能費勁,建議稍學下Python 之前學習前端知識也是為了能看懂HTML,便於爬蟲學習,建議瞭解下前端知識 2.re
urllib庫python2和python3具體區別
ble log redirect proxy dmgr python3 button ner net Python 2 name Python 3 name urllib.urlretrieve() urllib.request.urlretrieve(
爬蟲學習筆記-urllib庫
服務器 中一 9.png tro 編碼 網頁 如果 str param urllib庫是python中一個最基本的網絡請求庫。可以模擬瀏覽器的行為,向指定的服務器發送一個請求,並可以保存服務器返回的數據。 urlopen函數:在python3的urllib庫中,所有和網絡請
python3.X版本與2.X版本裏urllib庫的不同
使用 學習 nco 3.x lpar lib 會有 開始 學習python 最近在學習使用python3寫爬蟲,剛開始寫很菜(上次聽到一個大佬說花了一天時間學習Python,第二天就開始做了個大的爬蟲,大佬就是大佬豈是我等小菜能比的),因為之前學了一點2版本所以現在學習使
Python爬蟲學習筆記(一)——urllib庫的使用
scheme param https ade 網站 dmgr nor 分享圖片 out 前言 我買了崔慶才的《Python3網絡爬蟲開發實戰》,趁著短學期,準備系統地學習下網絡爬蟲。在學習這本書的同時,通過博客摘錄並總結知識點,同時也督促自己每日學習。本書第一章是開發環境的
【Python爬蟲學習筆記2】urllib庫的基本使用
代理服務 cor proc 技術 origin car windows tpc -c urllib庫是python內置的實現HTTP請求的基本庫,通過它可以模擬瀏覽器的行為,向指定的服務器發送一個請求,並保存服務器返回的數據。 urlopen函數 函數原型:urlopen(
python3爬蟲之Urllib庫(二)
cau python err 發送請求 split 完成 構造 服務器 inf 在上一篇文章中,我們大概講了一下urllib庫中最重要的兩個請求方法:urlopen() 和 Request() 但是僅僅憑借那兩個方法無法執行一些更高級的請求,如Cookies處理,代
Python2中urllib、urllib2在Python3中urllib庫匯入對應關係
◆在Python2.X中使用import urllib2——對應的,在Python3.X中會便用import urllib.request, urllib.error ◆在Python2.X中使用import urllib——對應的,在Python3.X中會使用import urllib.r
python3爬蟲(一)requests庫學習
前段時間利用零散時間在mooc上跟著嵩天老師學習了python爬蟲的相關知識,於是想把自己的學習經歷寫下來,對爬蟲的相關知識做一個歸納總結,文中如果有錯誤或者是不嚴謹的地方,歡迎指出和交流。 下面我們開始介紹requests庫
Python3使用urllib庫
1. urlopen() import urllib.request response = urllib.request.urlopen("http://www.baidu.com") urlopen(url)返回一個HTTPResponse型別的物件 pri
Python3中urllib庫的使用
urlopen方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) 這是urllib.r
python3 2018分散式爬蟲教程 -3 urllib 庫詳解
1.urllib 庫 安裝命令: pip install urllib urllib :Python內建的HTTP請求庫 # Python2 import urllib2 response = urllib2.urlopen('http://www.baidu.com')
【筆記】3、初學python3網路爬蟲——urllib庫的使用
python3網路爬蟲——urllib庫的使用 學習指引:視訊教程《python3網路爬蟲實戰》 為了避免學習後短時間內遺忘,讓自己隨時可以查閱前方自己學過的知識,特意註冊csdn部落格,方便自己學習時做筆記,也方便隨時回顧。也希望自己的學習過程能給同樣初學