摘要:一的處理出現產生的原因很多,比如網絡沒法連接,連接不到服務器,或者服務器不存在。二的使用,一般是某些網站為了辨別用戶身份,進行跟蹤,從而存儲在客戶端的數據。模塊的主要作用是提供可存儲的對象,以便于與模塊配合使用來訪問資源。
一、urlError的處理
出現urlError產生的原因很多,比如:網絡沒法連接,連接不到服務器,或者服務器不存在。
在代碼中,我們需要用try-except的語句來捕獲相應的異常
import urllib2 req = urllib2.Request("http://blog.csdn.net/cqcre") try: urllib2.urlopen(req) except urllib2.HTTPError, e:#使用hasattr屬性判斷code是否存在 print e.code except urllib2.URLError, e: print e.reason else: print "OK"
上述代碼,可以看到httperror,這里HTTPError是URLError的子類,在你利用urlopen方法發出一個請求時,服務器上都會對應一個應答對象response,其中它包含一個數字”狀態碼”。舉個例子,假如response是一個”重定向”,需定位到別的地址獲取文檔,urllib2將對此進行處理,此處需要了解HTTP狀態碼相關知識。
二、Cookie的使用cookie,一般是某些網站為了辨別用戶身份,進行session跟蹤,從而存儲在客戶端的數據。比如某些網站需要登錄,才能訪問某些頁面。這里我們可以使用urllib2庫保存我們登錄的cookie,然后再進行抓取內容。
2.1、Opener當你獲取一個URL你使用一個opener(一個urllib2.OpenerDirector的實例)。在前面,我們都是使用的默認的opener,也就是urlopen,它是一個特殊的opener,可以理解成opener的一個特殊實例,傳入的參數僅僅是url,data,timeout。
如果我們需要用到Cookie,只用這個opener是不能達到目的的,所以我們需要創建更一般的opener來實現對Cookie的設置。
2.2 Cookielibcookielib模塊的主要作用是提供可存儲cookie的對象,以便于與urllib2模塊配合使用來訪問Internet資源。 Cookielib模塊非常強大,我們可以利用本模塊的CookieJar類的對象來捕獲cookie并在后續連接請求時重新發送,比如可以實現模擬登錄 功能。該模塊主要的對象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。
它們的關系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar
2.2.1 獲取Cookie保存到變量import urllib2 import cookielib #聲明一個CookieJar對象實例來保存cookie cookie = cookielib.CookieJar() #利用urllib2庫的HTTPCookieProcessor對象來創建cookie處理器 handler=urllib2.HTTPCookieProcessor(cookie) #通過handler來構建opener opener = urllib2.build_opener(handler) #此處的open方法同urllib2的urlopen方法,也可以傳入request response = opener.open("http://www.baidu.com") for item in cookie: print "Name = "+item.name print "Value = "+item.value2.2.2 保存Cookie到文件
import cookielib import urllib2 #設置保存cookie的文件,同級目錄下的cookie.txt filename = "cookie.txt" #聲明一個MozillaCookieJar對象實例來保存cookie,之后寫入文件 cookie = cookielib.MozillaCookieJar(filename) #利用urllib2庫的HTTPCookieProcessor對象來創建cookie處理器 handler = urllib2.HTTPCookieProcessor(cookie) #通過handler來構建opener opener = urllib2.build_opener(handler) #創建一個請求,原理同urllib2的urlopen response = opener.open("http://www.baidu.com") #保存cookie到文件 cookie.save(ignore_discard=True, ignore_expires=True)
ignore_discard的意思是即使cookies將被丟棄也將它保存下來,ignore_expires的意思是如果在該文件中 cookies已經存在,則覆蓋原文件寫入
2.2.3 從文件中讀取cookieimport cookielib import urllib2 #創建MozillaCookieJar實例對象 cookie = cookielib.MozillaCookieJar() #從文件中讀取cookie內容到變量 cookie.load("cookie.txt", ignore_discard=True, ignore_expires=True) #創建請求的request req = urllib2.Request("http://www.baidu.com") #利用urllib2的build_opener方法創建一個opener opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) response = opener.open(req) print response.read()
這一篇又折騰折騰,結束了,可能看起來比較無聊,都是為了接下來的各種實戰來做準備的,從下一篇開始,正式的進行網站的爬蟲了。
推薦閱讀:【爬蟲系列之一】爬蟲開發環境的搭建
【爬蟲系列之二】python基礎知識的了解
更多精彩內容,歡迎大家關注我的微信公眾號:喝醉的清茶
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41853.html
摘要:下面我們傳入多個參數構建一個來感受一下在這里我們通過四個參數構造了一個,即請求,在中指定了和,傳遞的參數用了和方法來轉成字節流,另外指定了請求方式為。運行結果如下通過觀察結果可以發現,我們成功設置了,以及。用于處理重定向。 上一篇文章:Python3網絡爬蟲實戰---19、代理基本原理下一篇文章:Python3網絡爬蟲實戰---21、使用Urllib:處理異常 學習爬蟲,最初的操作便...
摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...
摘要:最后用來處理正常的邏輯,這是一個較好的異常處理寫法。上一篇文章網絡爬蟲實戰使用發送請求下一篇文章網絡爬蟲實戰使用解析鏈接 上一篇文章:Python3網絡爬蟲實戰---20、使用Urllib:發送請求下一篇文章:Python3網絡爬蟲實戰---22、使用Urllib:解析鏈接 在前面一節我們了解了 Request 的發送過程,但是在網絡情況不好的情況下,出現了異常怎么辦呢?這時如果我們...
摘要:如果要添加該參數,并且如果它是字節流編碼格式的內容,即類型,則需要通過方法轉化。通過的格式將字典進行字節流的編碼,將編碼后的字節流數據傳輸到指定這里存在一個,要進行指定方式解碼。第二個參數如果要傳,必須傳字節流類型的。 請求頭中的內容: Date: 標識 響應產生 的時間 。 Last-Modified: 指定資源的最后修改時間。 Content-Encoding: 指定 響應 內容...
摘要:本系列以為基礎是的標準網絡請求庫。包含了網絡數據請求,處理改變請求頭和用戶代理,重定向,認證等的函數。超時單位為秒參數必須是的實例返回值返回一個可以作為的對象。返回的個部分,分別是機制網絡位置路徑路徑段參數查詢片段。 本系列以python3.4為基礎urllib是Python3的標準網絡請求庫。包含了網絡數據請求,處理cookie,改變請求頭和用戶代理,重定向,認證等的函數。urlli...
閱讀 754·2023-04-26 01:30
閱讀 3305·2021-11-24 10:32
閱讀 2192·2021-11-22 14:56
閱讀 1985·2021-11-18 10:07
閱讀 559·2019-08-29 17:14
閱讀 629·2019-08-26 12:21
閱讀 3109·2019-08-26 10:55
閱讀 2945·2019-08-23 18:09