Python爬蟲-基于深度優(yōu)先策略的百度百科爬蟲

深度優(yōu)先策略:優(yōu)先往縱向挖掘深入,直到到達指定的深度或者該節(jié)點不存在鄰接節(jié)點,才會訪問第二條路诉濒。
廣度優(yōu)先策略:先訪問完一個深度的所有節(jié)點钞诡,再訪問更深一層的所有節(jié)點郑现。

分析-01.jpg

簡單的看:
深度優(yōu)先爬蟲路徑:A-B-E-F-C-D
廣度優(yōu)先爬蟲路徑:A-B-C-D-E-F

import requests
import re
import time

exist_urls=[]
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36',
}
#定義一個用來獲取頁面所有符合條件的鏈接函數(shù)
def scrapypy(url):
    try:
        response=requests.get(url=url,headers=headers)
        response.encoding='UTF-8'
        html=response.text
        link_lists=re.findall('.*?<a target=_blank href="/item/([^:#=<>]*?)".*?</a>',html)
        return link_lists
    except Exception as e:
        print(e)
        print('下載失敗:'+url)
        return None
    finally:
        exist_urls.append(url)

#主函數(shù)用來定義輸出格式,當爬取深度小于三層時荧降,遞歸調用主函數(shù)接箫,繼續(xù)爬取第二層的所有鏈接
def main(start_url,depth=1):
    count=0
    link_lists=scrapypy(start_url)
    if link_lists:
        unique_lists=list(set(link_lists)-set(exist_urls))
        for unique_list in unique_lists:
            unique_list='https://baike.baidu.com/item/'+unique_list
            count=count+1
            output='No.'+str(count)+'\t Depth:'+str(depth)+'\t'+start_url+'======>'+unique_list+'\n'
            print(output)
            with open('title.txt','a+') as f:
                f.write(output)
                f.close()
            if depth<2:
                main(unique_list,depth+1)

if __name__=='__main__':
    t1=time.time()
 start_url='https://baike.baidu.com/item/%E7%99%BE%E5%BA%A6%E7%99%BE%E7%A7%91'
    main(start_url)
    t2=time.time()
    print('總時間',t2-t1)

爬取深度為2時的運行結果:

分析-01.png
分析-02.png

另外還嘗試了深度為3的爬蟲,爬了六萬個就提示寫不進去朵诫,暫且暫停了辛友。后面繼續(xù)學習廣度優(yōu)先的爬蟲。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末剪返,一起剝皮案震驚了整個濱河市废累,隨后出現(xiàn)的幾起案子邓梅,更是在濱河造成了極大的恐慌,老刑警劉巖九默,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件震放,死亡現(xiàn)場離奇詭異,居然都是意外死亡驼修,警方通過查閱死者的電腦和手機殿遂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乙各,“玉大人墨礁,你說我怎么就攤上這事《停” “怎么了恩静?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹲坷。 經常有香客問我驶乾,道長,這世上最難降的妖魔是什么循签? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任级乐,我火速辦了婚禮,結果婚禮上县匠,老公的妹妹穿的比我還像新娘风科。我一直安慰自己,他們只是感情好乞旦,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布贼穆。 她就那樣靜靜地躺著,像睡著了一般兰粉。 火紅的嫁衣襯著肌膚如雪故痊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天玖姑,我揣著相機與錄音崖蜜,去河邊找鬼。 笑死客峭,一個胖子當著我的面吹牛豫领,可吹牛的內容都是我干的。 我是一名探鬼主播舔琅,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了课蔬?” 一聲冷哼從身側響起囱稽,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎二跋,沒想到半個月后战惊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡扎即,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年吞获,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谚鄙。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡各拷,死狀恐怖,靈堂內的尸體忽然破棺而出闷营,到底是詐尸還是另有隱情烤黍,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布傻盟,位于F島的核電站速蕊,受9級特大地震影響,放射性物質發(fā)生泄漏娘赴。R本人自食惡果不足惜规哲,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筝闹。 院中可真熱鬧,春花似錦腥光、人聲如沸关顷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽议双。三九已至,卻和暖如春捉片,著一層夾襖步出監(jiān)牢的瞬間平痰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工伍纫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宗雇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓莹规,卻偏偏與公主長得像赔蒲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內容

  • 深度優(yōu)先和廣度優(yōu)先算法在爬取一個整站上經常用到舞虱,本課程主要講解這兩個算法的原理以及使用過程欢际。 一、網(wǎng)站的樹結構 1...
    小怪聊職場閱讀 9,315評論 5 45
  • 1 序 2016年6月25日夜矾兜,帝都损趋,天下著大雨,拖著行李箱和同學在校門口照了最后一張合照椅寺,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,096評論 0 12
  • 1 概述 圖是數(shù)據(jù)結構中最復雜的形式浑槽,也是最燒腦的結構。無數(shù)的牛人樂此不疲地鉆研配并,然而括荡,時至今日,依然有很多問題等...
    CodingTech閱讀 2,311評論 0 8
  • 關鍵詞:尋路 ** 1.深度優(yōu)先搜索(Depth-First-Search):**沿著樹的深度遍歷樹的節(jié)點溉旋,盡可...
    ferrint閱讀 736評論 0 0
  • 進入2017丁酉年對于屬雞人來講進入了自己的本命年畸冲,出生的年柱地支跟命盤中所在的地支代表的宮位相同,從命理上來講這...
    慈元閣閱讀 659評論 0 3