2012-11-07 32 views
0

首先,我想讓我的Twitter帳戶的所有追隨者。我做了一些研究,發現我們可以使用Ruby on Rails進行網頁抓取:Nokogiri或Mechanize gems。我也有一個CSS選擇器用於網頁抓取。現在,如果我查看,HTML頁面源不會顯示帳戶的所有追隨者。Twitter API與Web抓取?

我真的可以使用網頁抓取代碼來獲取我所有的Twitter追隨者嗎?或者我應該使用Twitter API嗎?

+3

那麼,問一個問題:爲什麼*不能*使用提供的API?如果沒有[良好的合法]理由,則使用API​​。這是他們的作者創造的。它受到支持,專爲任務而設計,可以節省工作(更不用說帶寬和服務器開銷)。 – 2012-11-07 23:58:13

回答

5

一般而言,儘可能絕對使用API​​。顧名思義,「刮」你只是處理應用程序的「表面」,用MVC術語來說就是它的(HTML)視圖。這些觀點可以在任何時候改變 - 請考慮Twitter和其他類似服務進行網站重新設計的次數。如果你在拼搶,那麼每個網站的重新設計,甚至是次要的,都很可能破壞你現有的代碼,迫使你(沒有警告)根據猜測做出瘋狂的更新。 Nokogiri和Mechanize是功能強大的工具,但它們絕不會與直接訪問數據庫內容的API的功能性,穩定性和一致性進行比較,繞過不斷變化的「表面」。在Twitter的情況下,您可以獲得API包裝的附加好處,如Twitter gem用於訪問API,它爲API添加了一個用戶友好的層,使其更容易集成到您的應用程序中。

所以總結一下:使用API​​,可能通過一個API包裝器,如Twitter的寶石。

+0

感謝您對應用表面的詳細解釋。我會去嘰嘰喳喳的寶石。 – Rubyuser

+0

這是另一個:https://github.com/twitter/twitter-text-rb –

2

當服務不提供API或者API不能充分提供您需要的所有功能時,Web抓取通常是最後的手段。

我會先看看API。這是它的設計目的。

由於網站的結構可能發生巨大變化,導致代碼無法正常運行,因此網頁抓取可能會產生問題。

通常,公共API往往會有某種契約,不會對提供的數據進行重大更改。如果發生變化,API將提供API版本(可以調用舊版本的API)或文檔,以提供有關將要更改的內容以及何時會發生的信息。

此外,網絡抓取還有其他成本,如額外的帶寬。從API獲得的數據通常在應用程序中更有用。

也有相當多的圖書館(紅寶石),將提供您需要訪問您需要的API需要的許多基本功能。當API更新時,它們通常也會更新。

+0

+1版本和帶寬的優點。 –

+0

我不確定我們是否可以在企業帳戶的情況下使用twitter API。但似乎API是最好的選擇。 – Rubyuser