如何通過Python建立Twitter應用程式和API介面
- 來源 | 願碼(ChainDesk.CN) 內容編輯
- 願碼Slogan | 連線每個程式設計師的故事
- 網站 | http://chaindesk.cn
- 願碼願景 | 打造全學科IT系統免費課程,助力小白使用者、初級工程師0成本免費系統學習、低成本進階,幫助BAT一線資深工程師成長並利用自身優勢創造睡後收入。
- 官方公眾號 | 願碼 | 願碼服務號 | 區塊鏈部落
- 免費加入願碼全思維工程師社群 | 任一公眾號回覆“願碼”兩個字獲取入群二維碼
本文閱讀時長:9min
本文說明了如何運用Python API使用Twitter庫連線到Twitter帳戶。具體來說,此API允許使用者提取與特定Twitter帳戶相關的大量資料,以及通過 Python 管理 Twitter 的帖子(例如一次釋出多個推文)。
即使你是 Python 的初學者, 使用 Twitter Python 依賴包在分析方面也非常有用。例如,雖然Web開發人員可能更傾向於使用PHP等語言來連線API,但Python可以更靈活地分析資料的趨勢和統計資料。因此,資料科學家和其他分析師會發現Python更適合這個目的。
我們將從Python連線到Twitter API的一些基本步驟開始,然後檢視如何流式傳輸所需的資料。需要注意的是,雖然Twitter庫(以及其他Python庫,如Tweepy和Twython)可以使用資料執行大量不同的任務,但我們將專注於本文中的一些更基本(和有用)的查詢,解決以下問題:
- 使用適當的憑據將Python連線到Twitter API
- 下載與特定帳戶關聯的推文
- 下載帳戶的所有關注和關注使用者的列表
- 一次釋出多條推文
- 在Twitter上自定義搜尋特定術語的例項。
1.將Python連線到Twitter API
本教程使用iPython作為Python介面連線到Twitter。為了連線到API,我們需要獲取 Consumer Key , Consumer Secret 和 Access Token Secret 。
要獲得這些,您需要在apps.twitter.com上登入您的帳戶。到那裡後,系統會提示您建立一個應用程式:
建立應用程式後,您將在 Keys and Access Tokens 部分下找到相關的金鑰和令牌。
首先,我們在終端中安裝python-twitter庫,如下所示:
pip install python twitter
完成後,我們匯入Twitter庫並輸入憑據,如下所示:
import twitter api = twitter.Api(consumer_key='your_consumer_key', consumer_secret='your_consumer_secret', access_token_key='your_access_token_key', access_token_secret='your_access_token_secret')
print(api.VerifyCredentials())
輸入正確的憑證後,與API的連線即告完成,我們現在可以通過Python平臺控制我們的Twitter帳戶!
2.下載使用者時間線
現在我們已經將Python連線到Twitter API,我們可以繼續開始遠端使用不同的Twitter功能。例如,如果我們希望下載推文的使用者時間線,我們使用如下方法(並指定相應帳戶的螢幕名稱),然後使用該功能顯示結果:
statuses = api.GetUserTimeline(screen_name='Michael Grogan') print([s.text for s in statuses])
一旦我們輸入了上述內容,我們就會在Python介面中看到相應的時間軸:
3.下載以下和以下聯絡人
Twitter庫還使我們能夠下載特定使用者正在關注的帳戶列表,以及作為該特定使用者的關注者的帳戶。為此,我們使用前者,後者使用:
users = api.GetFriends() print([u.name for u in users])
followers = api.GetFollowers() print([f.name for f in followers])
請注意,我們還可以設定我們希望獲取的使用者數的上限。例如,如果我們希望為任何特定帳戶獲取100個關注者,我們可以通過向total_count函式新增變數來實現,如下所示:
followers = api.GetFollowers(total_count=100) print([f.name for f in followers])
4.釋出多個推文
使用Twitter API的一個巧妙之處是能夠一次釋出多條推文。例如,我們可以使用該命令同時釋出以下兩條推文(同樣,使用該功能進行確認)。一旦我們轉到相關的Twitter帳戶,我們就會看到這兩條推文都已釋出:
status = api.PostUpdate('How to calculate the Variance Inflation Factor in R: http://www.michaeljgrogan.com/ordinary-least-squares-an-analysis-of-stock-returns/ #rstats #datascience #programming') print(status.text)
status = api.PostUpdate('#BigData Scientists Earn 10X to 15X More Money Compared to Engineers, CAs http://bit.ly/1NoAgto#datascience') print(status.text)
5.搜尋推文
Twitter庫中包含的getsearch()函式是一個特別強大的工具。此功能允許我們在Twitter上搜索特定術語。請注意,這適用於已輸入特定術語的所有使用者,而不僅僅是我們在Python中提供憑據的帳戶。
例如,讓我們在Python中搜索術語“bigdata”。我們設定的引數是自2016年11月21日起包含該術語的推文,我們選擇限制流式傳輸的推文數量為10:
api.GetSearch(term='bigdata', since=2016-11-21, count=10)
請注意,我們可以通過各種方式自定義GetSearch()函式,具體取決於我們希望如何提取資料。例如,如果沒有指定日期,這將花費更長的時間來流式傳輸,我們也可以選擇在2016年11月21日之前收集包含術語“bigdata”的推文,如下所示:
api.GetSearch(term='bigdata', until=2016-11-21, count=10)
值得注意的是,此函式在我們在until變數下指定的日期之前下載最多7天的資料。
此外,我們不僅限於僅通過術語搜尋GetSearch。例如,假設我們希望通過地理位置搜尋推文 - 特別是自11月18日以來在紐約時代廣場1英里範圍內傳送的推文(請注意,距離可以使用mi或km分別以英里或公里格式化):
api.GetSearch(geocode="40.758896,-73.985130,1mi", since=2016-11-18)
執行該函式後,我們看到Python返回以下推文(當然,還有什麼更好的地方可以找到Donald Trump!):GetSearch()
如何使用這些資料?
如前所述,Python對流式社交網路資料極具吸引力的一個特殊原因是能夠對我們收集的資訊進行深入的資料分析。
例如,我們已經看到了如何使用位置搜尋推文GetSearch。隨著機器學習在分析社交媒體趨勢的資料科學家中風靡一時,在這一領域變得非常流行的一種特殊技術是網路分析。這種技術實際上可以顯示分散的資料(或節點)以形成緊密的網路,通常某些節點被證明是一個焦點。例如,假設我們要分析全球十個不同地點的1000條最受歡迎的推文。
在隨機的某一天,儘管我們看到網路中不同推文之間存在一些相關性,但我們可能仍會發現倫敦推文上的主題標籤與紐約推文的主題標籤差別很大。然而,在美國大選之夜或英國退歐這樣的重大世界事件中,當Twitter對這一特定主題發展趨勢時,發現網路往往更加緊密,因此,在這種情況下,情感分析的機會更多。一個場景,例如,很明顯誰將贏得總統職位,或英國投票退出歐盟。人們通常會看到網路以不同的方式聚集,這取決於趨勢推文,因為可以獲得更多的實時資訊。
這只是Python的優勢之一。雖然使用API連線到Twitter(可以在許多程式語言中完成)是一回事,但是能夠使用分析以有意義的方式對資料進行排序是另一回事。可以通過Python使用機器學習技術來分析來自社交網路的流資料並從該資料進行有意義的預測。
結論
模組文件提供了可用於Python下載,過濾和操作資料的不同功能的非常詳細的描述。最後,雖然我們還研究了使用API直接釋出到Twitter的方法,但上述技術在分析趨勢時尤其有用,例如標籤流行度,按位置搜尋術語的頻率等等。在這方面,通過Python與Twitter互動對於那些希望對收集的資訊實施資料分析技術的人特別有用。
當然,與Twitter的API互動可以使用多種語言完成,具體取決於您的最終目標。如果目標是Web開發或設計,那麼PHP或Ruby可能是您最好的選擇。但是,如果您的目標是使用從Twitter獲得的資料進行有意義的分析,那麼Python就是不二之選。