2014-06-27 16 views
1

我一直在處理android中的twitter應用程序。我使用Oauth身份驗證並對給定的關鍵字進行了一些搜索。如何在android中搜索twitter.com/search和解析數據

問題是限制率。我無法執行許多搜索。 Using the Search API

它說:

隨着用戶,爲你做的最好的事情是執行從twitter.com/搜索

好排氣搜索後我與鏈接碰到搜索

然後我在Google Play Twitter Search中發現了一個應用程序,它甚至不使用身份驗證並執行無限次搜索。

我懷疑Twitter Search開發者已經使用了這個邏輯。

  • 是否可以直接從twitter.com/search進行搜索?
  • 如果是,我應該遵循哪些庫/方法/方法?

回答

2

是否可以直接從 twitter.com/search使搜索?

從技術上說是的,但如果可能的話應該避免。你將不得不解析HTML,這是一個既緩慢又容易出錯的過程。

我應該遵循哪些庫/方法/方法?

你應該堅持使用官方API。我意識到這個速率限制是有點類似的,但我相信你可以通過減少對API調用的總體數量和更有效地使用每個調用來緩解這個問題。你必須記住,這是官方的Twitter API。 Twitter當然希望Twitter應用程序既好又棒,而每小時100個電話的速率限制似乎相當低,通常應該足夠了。無論如何,如果達到速率限制,您只需要一些適當的錯誤處理。我知道一個事實,即大多數第三方Twitter應用只是在達到費率限制時凍結其內容。顯示錯誤通知用戶他不能再更新一個小時,但他仍然可以像以前一樣繼續使用以前調用的所有緩存數據。

既然你還沒有發佈任何代碼,我不確定還有什麼可以告訴你只是試圖對每個電話都很聰明。儘可能使用緩存數據,並且只在絕對必要時執行API調用。


編輯:我覺得從https://mobile.twitter.com/search解析數據將是你最好的情況。只需尋找類timeline的div。此div中的每個<table />都包含一條推文。解析應該不是那麼難。

我測試用HtmlCleaner

HtmlCleaner cleaner = new HtmlCleaner(); 
TagNode root = cleaner.clean("https://mobile.twitter.com/search?q=asdf"); 
... // Filter out div with class "timeline" 
List<? extends TagNode> tweets = timeLineDiv.getElementListByAttValue("class", "tweet", false, true); 
+0

你好我的朋友。我意識到Twitter需要使用它的API。我已經和我的公司反覆討論過這個問題。作爲這個項目的一部分,我已經添加了一個搜索按鈕,使用戶能夠獲取關鍵字的最佳推文。這意味着我必須得到所有推文,對它們進行排序......而且這個過程的確有點慢。並且使用緩存數據的機會不會太多,因爲它只能搜索。那麼,對於我來說,瀏覽以前調用中使用的活動是有意義的。但恐怕對所有用戶來說都不是這樣。相反,我認爲... ...直接從twitter網頁搜索... – user3764893

+0

...。從'mobile.twitter.com'更準確,這是因爲它會佔用更少的內存,並且會更快。至於速度的微博已經有頂級的鳴叫,這意味着我不需要他們了排序 - 只是解析。而且它也有我不會在'Rate Limit'錯誤中運行的好處。用幾句話來說,它最符合我的要求。對於解析我已經考慮過[jsoup](http://jsoup.org)。 – user3764893

+0

很好,解析HTML時要小心。我也可以推薦[** HtmlCleaner **](http://htmlcleaner.sourceforge.net/)。我現在用它來解析HTML。 –