一、項目初衷和爬蟲概述 1.項目初衷 本人的大學畢設就是linux上用c寫的一個爬蟲,現在我想把它完善起來,讓他像一個企業級別的項目。為了重覆發明輪子來學習輪子的原理,我們不使用第三方框架(這裡是說的是指通常的linux系統編程教材以外的庫和介面-0-,當初我也是在虛擬機上跑的ubuntu+putt ...
一、項目初衷和爬蟲概述
1.項目初衷
本人的大學畢設就是linux上用c寫的一個爬蟲,現在我想把它完善起來,讓他像一個企業級別的項目。為了重覆發明輪子來學習輪子的原理,我們不使用第三方框架(這裡是說的是指通常的linux系統編程教材以外的庫和介面-0-,當初我也是在虛擬機上跑的ubuntu+putty+vim來開發)來實現。
然而我們造輪子不能閉門造車,苦心孤詣,而是要站在巨人的肩膀上,這樣我們才能夠更好更快地把握輪子的原理,進而造出更快更結實的輪子。下麵是兩位前輩的博客,本項目是在這兩個博客來提供的思路和部分代碼上實現的,下麵是這兩個博客的網址,閱讀這兩個博客將對我們接下來的學習有很大的幫助。
繾綣的西格瑪:(http://blog.csdn.net/l979951191/article/details/48650657)//大神在大二大三的時候有已經做到這種項目了,還有傅里葉變換的信號相關的文章,先膜拜一下。
尹成:(http://blog.csdn.net/itcastcpp/article/details/38883047)//清華大神就不多說了。
在做項目之前先要瞭解項目相關的內容:
(1)該爬蟲就功能來說比較單一,但是作為一個個人的學習項目來說又是相對完整的。
(2)該爬蟲可優化的地方太多,很多的方案不一定是最好的,所以該爬蟲僅僅適合於新手的學習
(3)這個算是一個完整的項目,基於linux的,是純C的。
(4)因為我也以此項目來學習的,我覺得作為學習項目還是具有一定的學習價值:
通過此項目,我們將學會幾種思想:軟體框架思想,代碼復用思想, 迭代開發思想,增量開發思想
通過此項目,我們將會掌握並鞏固以下技術要點:
1、Linux進程及調度 2、Linux服務 3、信號 4、Socket編程 5、Linux多任務 6、文件系統 7、正則表達式 8、shell腳本 9、動態庫
另外我們還會學到一些額外的的知識:
1、 如何使用HTTP協議
2、 如何設計一個系統
3、 如何選擇和使用開源項目
4、 如何選擇I/O模型
5、 如何進行系統分析
6、 如何進行容錯處理
7、 如何進行系統測試
8、 如何對源代碼進行管理
星辰大海已橫於前,雲帆掛起,讓我們開始一起開始學習的徵程吧!
2.爬蟲概述
網路爬蟲是搜索引擎的一個重要基本功能。由於互聯網上的信息非常龐大,我們藉助搜索引擎很容易得到自己需要的信息。搜索引擎首先需要一個信息採集系統,即網路爬蟲,將互聯網上的網頁或其它信息收集到本地,然後對這些信息創建索引。當用戶輸入查詢請求的時,先對用戶的查詢請求進行分析,然後在索引庫中進行匹配,最後對結果進行處理,返回結果。
網路爬蟲不僅是搜索引擎的重要組成部分,在信息採集、輿情分析、情報收集等一些需要進行數據採集的業務系統中也應用廣泛。對數據的採集是對大數據進行分析的重要前提條件。
網路爬蟲的工作流程較為複雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。
網路爬蟲從一個初始的URL集合出發,將這些URL全部放入到一個有序的待提取URL隊列里;然後從這個隊列里按順序取出URL,通過Web上的協議,獲取URL所指向的頁面,從這些已獲取的頁面中分析提取出新的URL,並將它們繼續放入到待提取URL隊列里,一直重覆上述過程,獲取更多的頁面。
下一篇我們對爬蟲項目進行簡單的設計並通過一個簡單的http請求實現對一個網頁抓取。