從接觸爬蟲到如今也有一年半了,在這裏總結一下一個新人入門爬蟲須要瞭解的種種。做爲實用向入門教程,我不會講太多細枝末節的東西。最重要的就是能爬到東西不是嗎?html
那好,做爲一個爬蟲新人,要爬一個網站時,應該怎麼開始呢?git
首先,肯定要爬的內容。是要整個網站的全部內容仍是隻是部分?須要的爬取的數據在網頁源代碼裏有嗎(涉及到模擬js發送請求)?須要的爬取的數據在網頁上有嗎(要用API爬嗎)?肯定要爬的內容以後,緊接着就須要考慮以下問題。github
嗯,我通常習慣把爬蟲分爲API爬蟲和網頁爬蟲。首先簡要介紹一下兩種爬蟲:redis
API爬蟲:數據庫
網頁爬蟲:網頁爬蟲
那麼,咱們應該寫哪一種爬蟲呢?選用哪一種爬蟲取決於你想要爬的東西。api
急着去寫爬蟲以前,讓咱們先好好考慮數據存放的問題。瀏覽器
首先,是存數據庫仍是文件裏?通常來講建議存數據庫中,便於以後的更新和查找。若是真的數據量比較小或者以後不多有更新和查找的話,那也能夠存在文件中(畢竟代碼寫起來比較簡單)。網絡
若是存在數據庫中,那麼選哪一種數據庫?這個就跟爬下來的數據相關啦。能夠選擇通用的MySql,也能夠選擇與網絡數據高度契合的Mongodb。要是爬的是社交網絡的話,還能夠選擇圖形數據庫,好比Neo4j,Orientdb,Arangodb等。可是圖形數據庫其較慢的插入速度實在是不適用於實時存儲爬蟲數據,只推薦在以後作數據分析時使用。 關於圖形數據庫的插入速度我在以前的一篇博文中提過,有興趣的能夠看看Neo4j安裝&入門&一些優缺點。scrapy
如今,咱們能夠坐下來開始爬蟲程序的編寫了。考慮到「實用向」三個字,我將經過兩個例子來展現基本的爬蟲程序怎麼寫。
在寫完能跑的爬蟲後,這是最讓人在乎的問題了。
對於API爬蟲的話,只須要申請更多的應用,提升API的可調用次數便可。而對於網頁爬蟲的話,由於涉及到待爬隊列的共享問題,不能只是簡單地多開爬蟲,可能要考慮分佈式的爬取方案了,如scrapy-redis。
最後,祝爬蟲愉快:)。