爬蟲入門(實用向)

從接觸爬蟲到如今也有一年半了,在這裏總結一下一個新人入門爬蟲須要瞭解的種種。做爲實用向入門教程,我不會講太多細枝末節的東西。最重要的就是能爬到東西不是嗎?html

那好,做爲一個爬蟲新人,要爬一個網站時,應該怎麼開始呢?git

首先,肯定要爬的內容。是要整個網站的全部內容仍是隻是部分?須要的爬取的數據在網頁源代碼裏有嗎(涉及到模擬js發送請求)?須要的爬取的數據在網頁上有嗎(要用API爬嗎)?肯定要爬的內容以後,緊接着就須要考慮以下問題。github


1.API爬蟲和網頁爬蟲?

嗯,我通常習慣把爬蟲分爲API爬蟲和網頁爬蟲。首先簡要介紹一下兩種爬蟲:redis

API爬蟲數據庫

  • 某些網站(通常是比較大的網站)會提供API接口供開發者調用,而後咱們這些可惡的「數據小偷」(笑) 就能夠經過調用這些API來獲取想要的數據。所謂網站API,通俗來講就是一個url。帶上身份驗證數據和一些參數,訪問這個url,便可得到想要的數據。一般,網站在提供API的同時也會提供實現好的類庫供咱們使用,幫助咱們擺脫煩人的http請求操做。

網頁爬蟲網頁爬蟲

  • 模擬瀏覽器的行爲訪問網頁,並從得到的頁面的源代碼中解析出須要的數據。

那麼,咱們應該寫哪一種爬蟲呢?選用哪一種爬蟲取決於你想要爬的東西。api

  1. 若是要爬的是整個網站的話,別無選擇,那就選網頁爬蟲。
  2. 不然,就是爬部分網頁數據了(好比用戶數據等)。若是要爬的網站提供API調用的話,那確定首先API爬蟲了,由於調用API或者類庫比手寫網頁爬蟲一般更簡單:)。若是網站不提供API或者要爬的數據API中沒有,那麼就只好選網頁爬蟲了。

2.爬下來的數據怎麼存,存在哪?

急着去寫爬蟲以前,讓咱們先好好考慮數據存放的問題。瀏覽器

首先,是存數據庫仍是文件裏?通常來講建議存數據庫中,便於以後的更新和查找。若是真的數據量比較小或者以後不多有更新和查找的話,那也能夠存在文件中(畢竟代碼寫起來比較簡單)。網絡

若是存在數據庫中,那麼選哪一種數據庫?這個就跟爬下來的數據相關啦。能夠選擇通用的MySql,也能夠選擇與網絡數據高度契合的Mongodb。要是爬的是社交網絡的話,還能夠選擇圖形數據庫,好比Neo4j,Orientdb,Arangodb等。可是圖形數據庫其較慢的插入速度實在是不適用於實時存儲爬蟲數據,只推薦在以後作數據分析時使用。 關於圖形數據庫的插入速度我在以前的一篇博文中提過,有興趣的能夠看看Neo4j安裝&入門&一些優缺點scrapy


3.爬蟲該怎麼寫

如今,咱們能夠坐下來開始爬蟲程序的編寫了。考慮到「實用向」三個字,我將經過兩個例子來展現基本的爬蟲程序怎麼寫。

3.1 API爬蟲

API爬蟲--Twitter實戰

3.2 網頁爬蟲

網頁爬蟲--scrapy入門


4.如何提升爬取的速度

在寫完能跑的爬蟲後,這是最讓人在乎的問題了。

對於API爬蟲的話,只須要申請更多的應用,提升API的可調用次數便可。而對於網頁爬蟲的話,由於涉及到待爬隊列的共享問題,不能只是簡單地多開爬蟲,可能要考慮分佈式的爬取方案了,如scrapy-redis


最後,祝爬蟲愉快:)。

轉載請註明出處:http://www.cnblogs.com/rubinorth/

相關文章
相關標籤/搜索