国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【爬蟲系列之三】URLError異常處理以及Cookie的使用

xiaochao / 778人閱讀

摘要:一的處理出現(xiàn)產(chǎn)生的原因很多,比如網(wǎng)絡(luò)沒法連接,連接不到服務(wù)器,或者服務(wù)器不存在。二的使用,一般是某些網(wǎng)站為了辨別用戶身份,進行跟蹤,從而存儲在客戶端的數(shù)據(jù)。模塊的主要作用是提供可存儲的對象,以便于與模塊配合使用來訪問資源。

一、urlError的處理

出現(xiàn)urlError產(chǎn)生的原因很多,比如:網(wǎng)絡(luò)沒法連接,連接不到服務(wù)器,或者服務(wù)器不存在。
在代碼中,我們需要用try-except的語句來捕獲相應(yīng)的異常

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方法發(fā)出一個請求時,服務(wù)器上都會對應(yīng)一個應(yīng)答對象response,其中它包含一個數(shù)字”狀態(tài)碼”。舉個例子,假如response是一個”重定向”,需定位到別的地址獲取文檔,urllib2將對此進行處理,此處需要了解HTTP狀態(tài)碼相關(guān)知識。

二、Cookie的使用

cookie,一般是某些網(wǎng)站為了辨別用戶身份,進行session跟蹤,從而存儲在客戶端的數(shù)據(jù)。比如某些網(wǎng)站需要登錄,才能訪問某些頁面。這里我們可以使用urllib2庫保存我們登錄的cookie,然后再進行抓取內(nèi)容。

2.1、Opener

當你獲取一個URL你使用一個opener(一個urllib2.OpenerDirector的實例)。在前面,我們都是使用的默認的opener,也就是urlopen,它是一個特殊的opener,可以理解成opener的一個特殊實例,傳入的參數(shù)僅僅是url,data,timeout。

如果我們需要用到Cookie,只用這個opener是不能達到目的的,所以我們需要創(chuàng)建更一般的opener來實現(xiàn)對Cookie的設(shè)置。

2.2 Cookielib

cookielib模塊的主要作用是提供可存儲cookie的對象,以便于與urllib2模塊配合使用來訪問Internet資源。 Cookielib模塊非常強大,我們可以利用本模塊的CookieJar類的對象來捕獲cookie并在后續(xù)連接請求時重新發(fā)送,比如可以實現(xiàn)模擬登錄 功能。該模塊主要的對象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

它們的關(guān)系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar

2.2.1 獲取Cookie保存到變量
import urllib2
import cookielib
#聲明一個CookieJar對象實例來保存cookie
cookie = cookielib.CookieJar()
#利用urllib2庫的HTTPCookieProcessor對象來創(chuàng)建cookie處理器
handler=urllib2.HTTPCookieProcessor(cookie)
#通過handler來構(gòu)建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.value
2.2.2 保存Cookie到文件
import cookielib
import urllib2

#設(shè)置保存cookie的文件,同級目錄下的cookie.txt
filename = "cookie.txt"
#聲明一個MozillaCookieJar對象實例來保存cookie,之后寫入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2庫的HTTPCookieProcessor對象來創(chuàng)建cookie處理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通過handler來構(gòu)建opener
opener = urllib2.build_opener(handler)
#創(chuàng)建一個請求,原理同urllib2的urlopen
response = opener.open("http://www.baidu.com")
#保存cookie到文件
cookie.save(ignore_discard=True, ignore_expires=True)

ignore_discard的意思是即使cookies將被丟棄也將它保存下來,ignore_expires的意思是如果在該文件中 cookies已經(jīng)存在,則覆蓋原文件寫入

2.2.3 從文件中讀取cookie
import cookielib
import urllib2

#創(chuàng)建MozillaCookieJar實例對象
cookie = cookielib.MozillaCookieJar()
#從文件中讀取cookie內(nèi)容到變量
cookie.load("cookie.txt", ignore_discard=True, ignore_expires=True)
#創(chuàng)建請求的request
req = urllib2.Request("http://www.baidu.com")
#利用urllib2的build_opener方法創(chuàng)建一個opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
print response.read()

這一篇又折騰折騰,結(jié)束了,可能看起來比較無聊,都是為了接下來的各種實戰(zhàn)來做準備的,從下一篇開始,正式的進行網(wǎng)站的爬蟲了。

推薦閱讀:

【爬蟲系列之一】爬蟲開發(fā)環(huán)境的搭建
【爬蟲系列之二】python基礎(chǔ)知識的了解

更多精彩內(nèi)容,歡迎大家關(guān)注我的微信公眾號:喝醉的清茶

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41853.html

相關(guān)文章

  • Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---20、使用Urllib:發(fā)送請求

    摘要:下面我們傳入多個參數(shù)構(gòu)建一個來感受一下在這里我們通過四個參數(shù)構(gòu)造了一個,即請求,在中指定了和,傳遞的參數(shù)用了和方法來轉(zhuǎn)成字節(jié)流,另外指定了請求方式為。運行結(jié)果如下通過觀察結(jié)果可以發(fā)現(xiàn),我們成功設(shè)置了,以及。用于處理重定向。 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---19、代理基本原理下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---21、使用Urllib:處理異常 學習爬蟲,最初的操作便...

    kun_jian 評論0 收藏0
  • 零基礎(chǔ)如何學爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學爬蟲技術(shù)以供學習,。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學爬蟲技術(shù)以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0
  • Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---21、使用Urllib:處理異常

    摘要:最后用來處理正常的邏輯,這是一個較好的異常處理寫法。上一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)使用發(fā)送請求下一篇文章網(wǎng)絡(luò)爬蟲實戰(zhàn)使用解析鏈接 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---20、使用Urllib:發(fā)送請求下一篇文章:Python3網(wǎng)絡(luò)爬蟲實戰(zhàn)---22、使用Urllib:解析鏈接 在前面一節(jié)我們了解了 Request 的發(fā)送過程,但是在網(wǎng)絡(luò)情況不好的情況下,出現(xiàn)了異常怎么辦呢?這時如果我們...

    hlcfan 評論0 收藏0
  • 爬蟲學習(二)基礎(chǔ)階段

    摘要:如果要添加該參數(shù),并且如果它是字節(jié)流編碼格式的內(nèi)容,即類型,則需要通過方法轉(zhuǎn)化。通過的格式將字典進行字節(jié)流的編碼,將編碼后的字節(jié)流數(shù)據(jù)傳輸?shù)街付ㄟ@里存在一個,要進行指定方式解碼。第二個參數(shù)如果要傳,必須傳字節(jié)流類型的。 請求頭中的內(nèi)容: Date: 標識 響應(yīng)產(chǎn)生 的時間 。 Last-Modified: 指定資源的最后修改時間。 Content-Encoding: 指定 響應(yīng) 內(nèi)容...

    xiaoqibTn 評論0 收藏0
  • Python標準庫學習之urllib

    摘要:本系列以為基礎(chǔ)是的標準網(wǎng)絡(luò)請求庫。包含了網(wǎng)絡(luò)數(shù)據(jù)請求,處理改變請求頭和用戶代理,重定向,認證等的函數(shù)。超時單位為秒?yún)?shù)必須是的實例返回值返回一個可以作為的對象。返回的個部分,分別是機制網(wǎng)絡(luò)位置路徑路徑段參數(shù)查詢片段。 本系列以python3.4為基礎(chǔ)urllib是Python3的標準網(wǎng)絡(luò)請求庫。包含了網(wǎng)絡(luò)數(shù)據(jù)請求,處理cookie,改變請求頭和用戶代理,重定向,認證等的函數(shù)。urlli...

    NusterCache 評論0 收藏0

發(fā)表評論

0條評論

xiaochao

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<