打造一條爬蟲

根據(jù)知名網(wǎng)站 stackoverflow 調(diào)查飞蹂,被調(diào)查者 69% 都是非科班出生。

很多人學(xué)習(xí)一門語言的第一件事情不是做一個(gè)大的項(xiàng)目,而且用它來寫一個(gè)爬蟲现斋,那么如何寫好一條爬蟲呢?這也是一個(gè)值得探討的問題俐末,爬蟲與反爬蟲就是實(shí)力的較量料按。

比如我們想爬豆瓣的熱門書籍,熱門電影卓箫,或者想把豆瓣的圖書數(shù)據(jù)都爬下來载矿,那我們應(yīng)該怎么做呢?中間會(huì)遇到什么問題呢烹卒?

反爬蟲措施一般有哪些呢闷盔?

  • 驗(yàn)證碼的方式,驗(yàn)證方式多種多樣旅急,圖片驗(yàn)證碼逢勾、拖動(dòng)驗(yàn)證碼、更加復(fù)雜變態(tài)的驗(yàn)證碼等等藐吮。對(duì)于圖片驗(yàn)證碼溺拱,有一些簡單的庫來識(shí)別這些驗(yàn)證碼圖片,但是效果并不是很好谣辞。

  • 頻率迫摔、IP 限制,比如豆瓣網(wǎng)頁潦闲,他是允許你少量爬一些資源的攒菠,但是如果同一個(gè)IP、同一個(gè)賬號(hào)在比較短的時(shí)間內(nèi)爬取大量的內(nèi)容歉闰,他也會(huì)通過技術(shù)手段阻止你辖众,往往是圖片驗(yàn)證碼

  • 全局動(dòng)態(tài)加載,要想爬別人的資源和敬,那么首先需要得到網(wǎng)頁的內(nèi)容凹炸,但有些網(wǎng)站就是這么牛,網(wǎng)頁最開始只加載一個(gè) JS 文件昼弟,然后通過 JS 再去加載其他的內(nèi)容信息啤它,這樣對(duì)爬蟲是非常不友好的。因?yàn)榕老x不能像瀏覽器一樣渲染頁面啊舱痘,臣妾真的做不到变骡。微博就是這樣滴,要想爬取微博內(nèi)容芭逝,做好心理準(zhǔn)備塌碌。

那我們應(yīng)該怎樣取和這些反爬蟲措施做斗爭呢?

  • 如果對(duì)方是圖片驗(yàn)證碼的方式旬盯、圖片滑塊的方式台妆,完全可以使用人工打碼的方式翎猛,就是把圖片驗(yàn)證碼或者滑塊位置信息傳輸?shù)降谌较到y(tǒng)里面,讓那些工人人工識(shí)別這些驗(yàn)證碼接剩,這還是一個(gè)產(chǎn)業(yè)鏈哦切厘。

  • 如果對(duì)方限制頻率,那則可以采取分布式爬蟲來工作懊缺,在云主機(jī)廠商多購買一些廉價(jià)的VPS疫稿,把任務(wù)分散開來,滿足爬取頻率上的需求桐汤。如果對(duì)方采取IP限制的方式而克,那就可以使用代理的方式工作,國內(nèi)的一些代理網(wǎng)站出售的代理服務(wù)器地址非常糟糕怔毛,上次以學(xué)習(xí)為目的購買的代理员萍,質(zhì)量非常差,幾百個(gè)IP里面也許只有幾個(gè)可以正常 work拣度,所以不建議購買碎绎,建議使用國外網(wǎng)站提供的,例如這家網(wǎng)站的免費(fèi)代理質(zhì)量非常高 freeproxylists

  • 如果對(duì)方采取全局動(dòng)態(tài)加載的方式來難為爬蟲抗果,那也不怕筋帖,selenium,將助你一臂之力冤馏,selenium 是一個(gè)中間的橋梁日麸,他提供一個(gè)瀏覽器驅(qū)動(dòng)程序,驅(qū)動(dòng)程序能夠驅(qū)動(dòng)不同的瀏覽器達(dá)到相同的效果逮光,他把細(xì)節(jié)封裝在內(nèi)部代箭,對(duì)外提供統(tǒng)一的API,是不是很酷涕刚?當(dāng)然搭配上 PhamtomJS 效果會(huì)更好嗡综,PhamtomJS 是一款無界面瀏覽器,他能夠像 chrome杜漠、firefox 那樣執(zhí)行桌面瀏覽器的功能极景,適合在服務(wù)器端渲染頁面,他的作者開發(fā)他的目的是用來進(jìn)行 web 自動(dòng)化測試的驾茴,但是用來做爬蟲是灰常不錯(cuò)的哦盼樟。

  • 智斗,一定要先分析被爬網(wǎng)站的特點(diǎn)锈至,再不斷修正自己的爬蟲方案晨缴,這樣才能讓爬蟲更加完美。

實(shí)戰(zhàn)篇

看來大家對(duì)爬蟲的興趣還是挺高的裹赴,決定今天把實(shí)戰(zhàn)內(nèi)容加上喜庞。

實(shí)戰(zhàn)目標(biāo)是:爬取 freeproxylists 上的內(nèi)容,并且嘗試自動(dòng)發(fā)布到簡書上來棋返。目標(biāo)雖然看起來簡單延都,但是他使用了 Google 驗(yàn)證的,本文主要是講解如何有條理地制作一條爬蟲睛竣,以及如何繞過它的驗(yàn)證晰房。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市射沟,隨后出現(xiàn)的幾起案子殊者,更是在濱河造成了極大的恐慌,老刑警劉巖验夯,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猖吴,死亡現(xiàn)場離奇詭異,居然都是意外死亡挥转,警方通過查閱死者的電腦和手機(jī)海蔽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绑谣,“玉大人党窜,你說我怎么就攤上這事〗柘” “怎么了幌衣?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長壤玫。 經(jīng)常有香客問我豁护,道長,這世上最難降的妖魔是什么垦细? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任择镇,我火速辦了婚禮,結(jié)果婚禮上括改,老公的妹妹穿的比我還像新娘腻豌。我一直安慰自己,他們只是感情好嘱能,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布吝梅。 她就那樣靜靜地躺著,像睡著了一般惹骂。 火紅的嫁衣襯著肌膚如雪苏携。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天对粪,我揣著相機(jī)與錄音右冻,去河邊找鬼装蓬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛纱扭,可吹牛的內(nèi)容都是我干的牍帚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼乳蛾,長吁一口氣:“原來是場噩夢啊……” “哼暗赶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肃叶,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蹂随,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后因惭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岳锁,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年蹦魔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浸锨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡版姑,死狀恐怖柱搜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剥险,我是刑警寧澤聪蘸,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站表制,受9級(jí)特大地震影響健爬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜么介,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一娜遵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧壤短,春花似錦设拟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至帘撰,卻和暖如春跑慕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摧找。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工核行, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牢硅,地道東北人檩坚。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓明场,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铐殃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子绵脯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,280評(píng)論 25 707
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術(shù)知識(shí)體系必須貫穿數(shù)據(jù)獲取休里、數(shù)據(jù)存儲(chǔ)蛆挫、數(shù)據(jù)提取、數(shù)據(jù)分析妙黍、數(shù)據(jù)挖掘悴侵、...
    whenif閱讀 18,079評(píng)論 45 523