1. 程式人生 > >菜鳥怎麼學做爬蟲-1

菜鳥怎麼學做爬蟲-1

本文打算寫成一個系列,剛開始覺得我寫得比較淺,而園子裡比較高階,似乎有點不搭配,於是只放在了自己的部落格上,後來一想萬一有新入門的朋友想參考一下呢,於是就厚著臉皮也發在這吧。高手們請輕噴。

 

首先,說明一下我已經用python和C#完整實現了批量爬取微信公眾號歷史文章的功能,而且已經做成GUI式的軟體。雖然跟專業選手相比我深知差距巨大,但是把經驗分享出來至少能幫助到一部分新人朋友,所以抖膽寫這個話題。還是請高手們輕噴。

但是,想找我要現成原始碼的,想免費摘桃子的,抱歉了,我還指望這個賺點零花錢呢。

 

首先,想學爬蟲不是看幾篇貼子就能搞定的,也不是你朋友嘴裡說的“很簡單”幾個字就能概括的,一切的一切都要從你自己的實際出發才行,比如有沒有程式設計基礎,一個文科生和一個過了計算機二級的理科生底子肯定是不一樣的,但即使是後者仍然也要學很多東西才能做一個能跑起來並且他自己能說得懂為啥能跑起來的爬蟲。

第一篇:爬蟲,“爬”的是什麼東東。

其實“爬蟲”這個詞彙挺貼切的,就是像蜘蛛這種“蟲”一樣去“爬”取網路上的資料,個人認為這個“爬”有兩層含義:一是指網際網路就是一個大網,我們要像蜘蛛一樣在這個網上到處去爬,到處去搜集資訊。二是指單個網頁上可能有你需要的資訊,我們要把這些資訊從別人的網頁上抓取到自己的本地,為我所用。

所以,順著上面的兩個含義,我們要學習這兩個爬取的標的:

1、網路:即你要怎麼從一個節點開始不停得去搜索到下一個目標節點,因特網太巨大了你不可能全爬下來,所以一定要有尋找目標的策略。不過好在問題不大,因為你可以先人工百度出你想要蒐集的資訊範圍,或者,其實多數時候我們的爬取任務都是比較明確的,比如我要爬取微信公眾號的文章,我一定是想知道我要爬取具體哪一個公眾號的文章,而不是全網都爬(當然搜尋全部公眾號的文章也有辦法),又比如我想爬取微博某個名人說過的話,那我直接去有針對性的爬取就可以了。

2、有了目標網頁,還要會分析目標網頁,而網頁是由什麼構成的呢?html 程式碼,加 js 和 css,多數網頁你只會 html 也行,瞭解 js 和 css 則更好。大概隨便找一本書或者一個線上免費網站學個三五天應該就差不多了。然後,一定要先試著自己用 html 寫幾個網頁,加深對其語法的理解。然後,才能更準確得去解析這個網頁。

OK,第一篇,先講最基礎的“概述”的第一部分,我們有的是時間,慢慢討論。

書接上文

再強調一下,你要爬什麼就要先了解什麼,要對網頁的呈現原理非常熟悉才可以,也許你現在還寫不出漂亮的網頁程式碼,但最最起碼你看到一段原始碼要知道它是啥意思。

不能眉毛鬍子一把抓看著差不多就覺得爬了再說,也不能說“我覺得這個能爬”,“我看都看到了,難道不能儲存下來嗎”

以上這些,牛逼一點說,肯定能爬。現實一點說:夠你爬一壺的。

基礎牢固,事半功倍,基礎不牢,事倍功半。

至於網頁學習資料,網上太多了,就不講了,但要注意一點:不要用Dreamweaver這種拖拉式的IDE,用這玩意你就走歪路了,用記事本直接自己寫程式碼才是正道,但是不推薦windows下的記事本,有bug。可以下一個免費版的 notepad++ ,不要以為我這是隨便講講,等你被坑的時候就知道該聽我的了。

學html的同時你應該自然而然得就會學到一些css相關的知識,提醒一點:css絕不是你想象的那麼簡單易學的,有非常多的竅門和暗坑。我到現在都經常遇到怎麼看程式碼都覺得應該能正常顯示但實際看到的就是元素位置錯亂的問題。這玩意需要經驗積累,所以要虛心點學。

然後是js,最簡單的學一點吧,還是那句話:要做到也許你還不會寫,但起碼要能看懂,如果看不懂也起碼要能知道怎麼去根據其中的關鍵字去百度搜索學習。

以上這些,是讓大家瞭解自己要抓取的標的的基本資訊。所謂知敵才能克敵嘛。

但是要怎麼克?那就要找到自己克敵的武器了。也就是說,你還得學一門把網頁上的內容抓取下來,然後分析和儲存的語言。有很多種語言都可以實現這個功能,且基本每種語言都有一些現成的很好用的庫,最常見的是python C# java php nodejs 等等,如果你只學一門的話建議學python,因為這玩意用的人多,現成的爬蟲工具也多,你遇到問題時容易搜尋到答案。

還有一個原因是:我對這個相對來說熟悉點。

再有一個原因:python 語言除了能做爬蟲幾乎能做任何其他事情。

最後一個原因:這玩意現在火呀,你還不得追追時髦啊,這樣吹牛皮時也顯得高階不是。

OK,今天先扯這麼多。未完待續。