學習爬蟲應該從哪裡學起?
爬蟲技術那麼屌,大神推薦幾個網站,讓菜鳥學習一下
學習爬蟲技術很多年了,現在自己做了個標準化採集器——發源地。下面來解答下你的疑問:
1、要想了解爬蟲,那麼,不得不提到HTTP協議了,HTTP是爬蟲工作的重要支撐,了解HTTP協議對於我們寫出強大的爬蟲有著重要的意義,如果你現在對HTTP協議還完全不了解,那麼這本書是你不錯的選擇,《HTTP權威指南》(好不容已找到完整版,送給真正想學的人吧)學習這個,你將會對HTTP有深刻的認識,寫爬蟲的時候,也能更加如魚得水。(註:並不是說必須完全學會HTTP才能寫出爬蟲,只是對Http了解越多,對我們有益無害,有時間強烈推薦看看這本書)
2、我自己真正接觸了解爬蟲的入門書籍《自己動手寫網路爬蟲》(包含書籍的源代碼),作為入門確實還不錯,裡面涉及到爬蟲的方方面面,爬蟲的一些核心問題,研究方向,分散式爬蟲,還有大數據方面的一些內容,HDFS,HBASE,MR等,感興趣的可以看看,對於整個爬蟲領域和大數據有個大致的描述。
以上可參考,需要交流可聯繫我。
爬蟲的入門是很快的。
了解HTTP協議,了解幾個API,就可以直接上手寫代碼了。
推薦:《自己動手寫網路爬蟲》一書,裡面詳細講解了爬蟲的基本原理和實現,儘管API有些過時了,但是思路是很棒的。
爬蟲的學習分為下面幾個階段吧:
第一階段:了解HTTP協議,入門幾個API
關於API,推薦下面兩個:
- HttpClient
- Java的一個庫,用起來很不錯,把HTTP協議的東西都封裝好了。
- Python的爬蟲庫,用的不多,詳細的在這裡已經有回答的很好的了:如何入門 Python 爬蟲? - 爬蟲(計算機網路)
了解這兩個庫的基本使用,怎麼發起GET/POST請求,怎麼用連接池、怎麼管理連接、怎麼設置代理,然後就基本上可以爬大部分網站了。
第二階段:優化爬蟲,增加爬蟲的功能
現在需要考慮的是如何爬取那些比較繁瑣的網頁,比如微博需要登陸才能爬一些數據,知乎和豆瓣一樣;對於這樣的案例,你需要考慮完整的解決方案(多個殭屍賬號、Cookie池等等)。
對於爬下來的網頁,你需要抽取其中的欄位(也就是你需要的欄位);說白了這就是個解析的過程,解析的工具有很多,對於JSON和HTML或者XML解析的庫非常多,不一一列舉了,熟悉這些API的使用,並且注意正則表達式對數據解析的使用。
對於爬取數據的存儲,大數據的話就別用MySQL了,Hbase是比較不錯的選擇,速度快的不止一點點。
可以多了解其他的一些爬蟲的實現,增加自己的經驗,比如Nutch爬蟲和ElasticSearch搜索引擎。
第三階段:對抗反爬
我的第一個爬蟲程序是爬取淘寶商品的評論,爬了沒多久就開始報異常,一看網頁,不返回數據了,明顯淘寶檢測到了我在對其進行爬取。這裡就要涉及反扒的問題了。
對於反扒的對抗,這裡肯定需要多個代理IP,而且每個IP發起HTTP請求的速度不能過快,一樣會被反爬程序檢測到的。所以這裡要針對單個代理IP進行發起HTTP請求的速度控制,兩秒一次是比較合適的選擇。
另外,做DNS緩存也是非常必要的。通過DNS緩存不僅可以免去DNS查詢的時間,依然可以避免被檢測到正在爬取。
第四階段:構建大型的分散式爬蟲系統
這裡就需要很多的爬蟲方面的經驗了,不僅僅是反爬策略、HTTP請求的基本知識、存儲、網頁內容解析,更多的是整個項目的設計和對後向兼容性的考慮吧。內容非常多,就暫且不一一展開了。可以參考八爪魚採集器 ,他們的數據採集器做的很不錯。
先學http協議
推薦閱讀:
※如何用八爪魚採集器提取新浪微博的數據呢?
※如何利用python asyncio編寫非同步爬蟲?
※python抓取網易財經的個股的財務數據,比如利潤表,並分項保存到mysql,需要哪些步驟?
※啟信寶的查詢功能是如何實現的?
※怎樣利用數據爬取和分析工具寫出《黃燜雞米飯是怎麼火起來的》這樣的文章?