如何入門Python

姓名:李歡洋? 學號 :16010110003

轉(zhuǎn)載自https://www.zhihu.com/question/20899988/answer/24923424?utm_source=com.jianshu.haruki&utm_medium=social ,有刪節(jié)壁查。

【嵌牛導(dǎo)讀】:“入門”是良好的動機,但是可能作用緩慢祖屏。如果你手里或者腦子里有一個項目,那么實踐起來你會被目標驅(qū)動买羞,而不會像學習模塊一樣慢慢學習袁勺。

【嵌牛鼻子】:python,爬蟲哩都,入門,深度學習婉徘。

【嵌牛提問】:你是否曾經(jīng)想自學python但苦于無從下手漠嵌。

【嵌牛正文】:

先長話短說summarize一下:

你需要學習

基本的爬蟲工作原理

基本的http抓取工具,scrapy

Bloom Filter: Bloom Filters by Example

如果需要大規(guī)模網(wǎng)頁抓取盖呼,你需要學習分布式爬蟲的概念儒鹿。其實沒那么玄乎,你只要學會怎樣維護一個所有集群機器能夠有效分享的分布式隊列就好几晤。最簡單的實現(xiàn)是python-rq: https://github.com/nvie/rq

rq和Scrapy的結(jié)合:darkrho/scrapy-redis · GitHub

后續(xù)處理约炎,網(wǎng)頁析取(grangier/python-goose · GitHub),存儲(Mongodb)

以下是短話長說:

說說當初寫的一個集群爬下整個豆瓣的經(jīng)驗吧蟹瘾。

1)首先你要明白爬蟲怎樣工作圾浅。

想象你是一只蜘蛛,現(xiàn)在你被放到了互聯(lián)“網(wǎng)”上憾朴。那么狸捕,你需要把所有的網(wǎng)頁都看一遍。怎么辦呢众雷?沒問題呀灸拍,你就隨便從某個地方開始做祝,比如說人民日報的首頁,這個叫initial pages鸡岗,用$表示吧混槐。

在人民日報的首頁,你看到那個頁面引向的各種鏈接轩性。于是你很開心地從爬到了“國內(nèi)新聞”那個頁面声登。太好了,這樣你就已經(jīng)爬完了倆頁面(首頁和國內(nèi)新聞)炮姨!暫且不用管爬下來的頁面怎么處理的捌刮,你就想象你把這個頁面完完整整抄成了個html放到了你身上。

突然你發(fā)現(xiàn)舒岸, 在國內(nèi)新聞這個頁面上绅作,有一個鏈接鏈回“首頁”。作為一只聰明的蜘蛛蛾派,你肯定知道你不用爬回去的吧俄认,因為你已經(jīng)看過了啊。所以洪乍,你需要用你的腦子眯杏,存下你已經(jīng)看過的頁面地址。這樣壳澳,每次看到一個可能需要爬的新鏈接岂贩,你就先查查你腦子里是不是已經(jīng)去過這個頁面地址。如果去過巷波,那就別去了萎津。

好的,理論上如果所有的頁面可以從initial page達到的話抹镊,那么可以證明你一定可以爬完所有的網(wǎng)頁锉屈。

2)效率

如果你直接加工一下上面的代碼直接運行的話,你需要一整年才能爬下整個豆瓣的內(nèi)容垮耳。更別說Google這樣的搜索引擎需要爬下全網(wǎng)的內(nèi)容了颈渊。

問題出在哪呢?需要爬的網(wǎng)頁實在太多太多了终佛,而上面的代碼太慢太慢了俊嗽。設(shè)想全網(wǎng)有N個網(wǎng)站,那么分析一下判重的復(fù)雜度就是N*log(N)铃彰,因為所有網(wǎng)頁要遍歷一次乌询,而每次判重用set的話需要log(N)的復(fù)雜度。OK豌研,OK妹田,我知道python的set實現(xiàn)是hash——不過這樣還是太慢了唬党,至少內(nèi)存使用效率不高。

通常的判重做法是怎樣呢鬼佣?Bloom Filter. 簡單講它仍然是一種hash的方法驶拱,但是它的特點是,它可以使用固定的內(nèi)存(不隨url的數(shù)量而增長)以O(shè)(1)的效率判定url是否已經(jīng)在set中晶衷±陡伲可惜天下沒有白吃的午餐,它的唯一問題在于晌纫,如果這個url不在set中税迷,BF可以100%確定這個url沒有看過。但是如果這個url在set中锹漱,它會告訴你:這個url應(yīng)該已經(jīng)出現(xiàn)過箭养,不過我有2%的不確定性。注意這里的不確定性在你分配的內(nèi)存足夠大的時候哥牍,可以變得很小很少毕泌。一個簡單的教程:Bloom Filters by Example

注意到這個特點,url如果被看過嗅辣,那么可能以小概率重復(fù)看一看(沒關(guān)系撼泛,多看看不會累死)。但是如果沒被看過澡谭,一定會被看一下(這個很重要愿题,不然我們就要漏掉一些網(wǎng)頁了!)蛙奖。 [IMPORTANT: 此段有問題潘酗,請暫時略過]

好,現(xiàn)在已經(jīng)接近處理判重最快的方法了外永。另外一個瓶頸——你只有一臺機器崎脉。不管你的帶寬有多大拧咳,只要你的機器下載網(wǎng)頁的速度是瓶頸的話伯顶,那么你只有加快這個速度。用一臺機子不夠的話——用很多臺吧骆膝!當然祭衩,我們假設(shè)每臺機子都已經(jīng)進了最大的效率——使用多線程(python的話,多進程吧)阅签。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掐暮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子政钟,更是在濱河造成了極大的恐慌路克,老刑警劉巖樟结,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異精算,居然都是意外死亡瓢宦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門灰羽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驮履,“玉大人,你說我怎么就攤上這事廉嚼∶蹈洌” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵怠噪,是天一觀的道長恐似。 經(jīng)常有香客問我,道長舰绘,這世上最難降的妖魔是什么蹂喻? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮捂寿,結(jié)果婚禮上口四,老公的妹妹穿的比我還像新娘。我一直安慰自己秦陋,他們只是感情好蔓彩,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驳概,像睡著了一般赤嚼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顺又,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天更卒,我揣著相機與錄音,去河邊找鬼稚照。 笑死蹂空,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的果录。 我是一名探鬼主播上枕,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弱恒!你這毒婦竟也來了辨萍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤返弹,失蹤者是張志新(化名)和其女友劉穎锈玉,沒想到半個月后爪飘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡拉背,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年悦施,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片去团。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡抡诞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出土陪,到底是詐尸還是另有隱情昼汗,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布鬼雀,位于F島的核電站顷窒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏源哩。R本人自食惡果不足惜鞋吉,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望励烦。 院中可真熱鬧谓着,春花似錦、人聲如沸坛掠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屉栓。三九已至舷蒲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間友多,已是汗流浹背牲平。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留域滥,地道東北人纵柿。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像骗绕,于是被迫代替她去往敵國和親藐窄。 傳聞我的和親對象是個殘疾皇子资昧,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

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

  • 從爬蟲必要的幾個基本需求來講: 1.抓取 py的urllib不一定去用酬土,但是要學,如果還沒用過的話格带。 比較好的替代...
    Python程序媛閱讀 533評論 0 7
  • 入門”是良好的動機撤缴,但是可能作用緩慢刹枉。如果你手里或者腦子里有一個項目,那么實踐起來你會被目標驅(qū)動屈呕,而不會像學習模塊...
    Python程序媛閱讀 398評論 0 4
  • 1.感謝我的健康賜予我新的一天微宝,謝謝謝謝謝謝! 2.感謝我的汽車帶給我便利虎眨,謝謝謝謝謝謝蟋软! 3.感謝我呼吸的每一口...
    霖霄霦閱讀 392評論 0 0
  • 最近岳守,在老家過新年,日子每天忙到連我媽都不高興了碌冶。 春節(jié)是個奇葩的節(jié)日湿痢,想必只有華人才過。于是扑庞,浩浩蕩蕩的漂們殺回...
    貓步旅人閱讀 475評論 1 4
  • 濯堂 庫斯特說譬重,上帝讓右手成為右手,就是對右手最高的獎賞罐氨。而我也想說:上帝讓左手成為左手又何嘗不是最高的獎...
    濯堂閱讀 404評論 0 1