python 爬蟲(chóng)-1:下載網(wǎng)頁(yè)源代碼

我的博客:http://www.wangs0622.com

參考書籍:《用 Python 寫網(wǎng)絡(luò)爬蟲(chóng)》

下載地址: http://download.csdn.net/detail/wangs0622/9921704

當(dāng)然你也可以自己百度搜索下載姥卢。

一點(diǎn)感想

書看一遍是不夠的,溫故而知新。

下載一個(gè)網(wǎng)頁(yè)源代碼

最簡(jiǎn)單的形式

使用的是 python 自帶的庫(kù) urllib2

import urllib2
def download(url):
    print "downloading " , url
    html = urllib2.urlopen(url).read()
    return html

給定想要下載的 URL 即可下載其源代碼。

添加處理異常的功能

當(dāng)然很有可能在下載的過(guò)程中出現(xiàn)各種問(wèn)題,導(dǎo)致出現(xiàn)問(wèn)題,所以需要在上面的程序上擴(kuò)展,處理異常的情況薪前。

import urllib2
def download(url):
    print "downloading " , url
    try:
        html = urllib2.urlopen(url).read()
    except urllib2.URLErrors as e:
        print "download error: " , e.reason
        html = None

    return html

完整的程序如下:

# _*_ encoding:utf-8 _*_
'''
Created on 2017年8月4日

@author: wangs0622
'''
import urllib2
def download(url):
    print "downloading " , url
    try:
        html = urllib2.urlopen(url).read()
    except urllib2.URLError as e:
        print "download error: " , e.reason
        html = None

    return html

if __name__ == '__main__':
    download('http://www.wangs0622.com/dex')

運(yùn)行的結(jié)果如下:

downloading  http://www.wangs0622.com/dex
download error:  Not Found

添加重試下載功能

有的時(shí)候,下載出現(xiàn)了問(wèn)題关斜,可能是但是網(wǎng)絡(luò)不好的原因示括,也有可能是頁(yè)面不存在的原因,一般會(huì)返回 4xx 和 5xx 類型的錯(cuò)誤代碼痢畜。 最常見(jiàn)的莫過(guò)于 404垛膝,即表示網(wǎng)頁(yè)未找到。(為什么網(wǎng)頁(yè)為找到丁稀,使用的是 404 代碼呢吼拥? 據(jù)說(shuō)是有歷史原因的,有興趣的話可以去百度线衫。)

正常情況下凿可,返回 5xx 錯(cuò)誤代碼的話,是因?yàn)榫W(wǎng)絡(luò)的原因授账,并不是網(wǎng)頁(yè)不存在枯跑,這個(gè)時(shí)候,我們可以嘗試重新下載這個(gè)網(wǎng)頁(yè)白热,所以敛助,就有了如下的改進(jìn)版本。

import urllib2
def download(url, num_retries = 5):
    '''
    function: 下載網(wǎng)頁(yè)源代碼屋确,如果遇到 5xx 錯(cuò)誤狀態(tài)辜腺,則繼續(xù)嘗試下載,知道下載 5 次為止乍恐。
    '''
    print "downloading " , url
    try:
        html = urllib2.urlopen(url).read()
    except urllib2.URLError as e:
        print "download error: " , e.reason
        html = None
        if num_retries > 0:
            if hasattr(e,'code') and 500 <= e.code < 600:
                return download(url, num_retries-1)

    return html

一個(gè)有用的網(wǎng)站

一個(gè)有用的網(wǎng)站: http://httpstat.us/ 專門用來(lái)返回相應(yīng)的網(wǎng)頁(yè)返回代碼。 例如 http://httpstat.us/404

小結(jié)

截止目前的 download() 函數(shù)已經(jīng)具備健全的下載網(wǎng)頁(yè)源代碼的功能测砂,可以應(yīng)付一般情況下的使用了茵烈。

后面還需要介紹為 download() 函數(shù)添加代理和下載延時(shí)功能,之后再介紹 鏈接爬蟲(chóng)砌些。我想法是在介紹這些功能的同時(shí)我們實(shí)踐爬取一個(gè)網(wǎng)站呜投。相信學(xué)爬蟲(chóng)的都是廣大男士加匈,后面實(shí)踐爬取的網(wǎng)站是:http://www.mm131.com 我們的目標(biāo)是將其中的圖片下載下來(lái)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仑荐,一起剝皮案震驚了整個(gè)濱河市雕拼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粘招,老刑警劉巖啥寇,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異洒扎,居然都是意外死亡辑甜,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門袍冷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)磷醋,“玉大人,你說(shuō)我怎么就攤上這事胡诗〉讼撸” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵煌恢,是天一觀的道長(zhǎng)骇陈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)症虑,這世上最難降的妖魔是什么缩歪? 我笑而不...
    開(kāi)封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮谍憔,結(jié)果婚禮上匪蝙,老公的妹妹穿的比我還像新娘。我一直安慰自己习贫,他們只是感情好逛球,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著苫昌,像睡著了一般颤绕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上祟身,一...
    開(kāi)封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天奥务,我揣著相機(jī)與錄音,去河邊找鬼袜硫。 笑死氯葬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的婉陷。 我是一名探鬼主播帚称,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼官研,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了闯睹?” 一聲冷哼從身側(cè)響起戏羽,我...
    開(kāi)封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎楼吃,沒(méi)想到半個(gè)月后始花,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡所刀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年衙荐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浮创。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忧吟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斩披,到底是詐尸還是另有隱情溜族,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布垦沉,位于F島的核電站煌抒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏厕倍。R本人自食惡果不足惜寡壮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望讹弯。 院中可真熱鬧况既,春花似錦、人聲如沸组民。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)臭胜。三九已至莫其,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耸三,已是汗流浹背乱陡。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仪壮,地道東北人憨颠。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像睛驳,于是被迫代替她去往敵國(guó)和親烙心。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本內(nèi)容為《用Python寫網(wǎng)絡(luò)爬蟲(chóng)》書籍內(nèi)容乏沸,有興趣的讀者可以購(gòu)買本書淫茵,本章的代碼皆可在Python3中運(yùn)行。為了...
    海人為記閱讀 2,250評(píng)論 0 5
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,262評(píng)論 25 707
  • 聲明:本文講解的實(shí)戰(zhàn)內(nèi)容蹬跃,均僅用于學(xué)習(xí)交流匙瘪,請(qǐng)勿用于任何商業(yè)用途! 一蝶缀、前言 強(qiáng)烈建議:請(qǐng)?jiān)陔娔X的陪同下丹喻,閱讀本文...
    Bruce_Szh閱讀 12,717評(píng)論 6 28
  • 從上周五前夜開(kāi)始,到今天走過(guò)了幾天一只手都能數(shù)出來(lái)翁都,但對(duì)于我碍论,對(duì)于上萬(wàn)的戰(zhàn)友家長(zhǎng)們,我感覺(jué)歷經(jīng)了幾個(gè)世紀(jì)之久柄慰,夜夜...
    點(diǎn)點(diǎn)六六超人麻麻閱讀 215評(píng)論 0 0
  • 不知不覺(jué)鳍悠,生命已經(jīng)過(guò)去二十幾載了。 二十多年了坐搔,沒(méi)有取得任何成就藏研,只是浪費(fèi)了時(shí)間荒廢了青春。 我每天都在想概行,我該以...
    唐縣每日播報(bào)閱讀 416評(píng)論 0 0