使用 Python 抓取 Twitter 數據 [使用 2 個 API]

已發表: 2020-11-30

目錄

介紹

Twitter 等社交媒體平台是收集數據集的最佳存儲庫之一。 從事新的數據科學項目需要大量數據,收集數據集並非易事。

Twitter 提供了多樣化的數據類型,因為它是來自不同心態和不同情緒的人的推文集合。 這種沒有偏見的數據集是訓練新機器學習模型急需的先決條件。

讓我們開始吧!

我們將介紹 2 個用於 Twitter 數據抓取的 API。

  1. 呸呸呸
  2. 孿生

呸呸呸

在我們開始介紹使用 Tweepy API 抓取數據的 python 代碼之前,您需要知道我們需要 Twitter 開發人員帳戶的憑據,如果您已經擁有它們,那將是小菜一碟。

對於沒有開發者帳戶的人,您可以在這裡申請 在申請開發者帳戶之前,您需要擁有一個 Twitter 帳戶。 申請開發者帳號是一個簡單的過程,應用程序會詢問一些基本問題,例如申請原因等。開發者帳號的批准通常需要 2-3 天。

收到開發者帳戶的批准後,請記下“密鑰和令牌”部分中的消費者 API 密鑰、訪問令牌和訪問令牌秘密。

此外,還有一點需要注意的是,tweepy 幾乎沒有限制,比如你只能抓取不超過一周的推文。 抓取限制,在 15 分鐘的時間內最多 18000 條推文。

太好了,現在我們已經擁有來自開發者帳戶的密鑰和令牌,讓我們對它們進行授權。

consumer_key = 你的消費者密鑰

consumer_secret = 你的消費者秘密

access_token = 你的訪問令牌

access_token_secret = 你的令牌秘密

授權= tweepy.OAuthHandler(consumer_key, consumer_secret)

授權.set_access_token(access_token, access_token_secret)

api = tweepy.API(授權,wait_on_rate_limit = True

現在我們已經使用我們的憑據進行了授權,讓我們抓取特定帳戶的推文。 現在,讓我們抓取 Sundar Pichai 先生的推文。

用戶名= ' sundarpichai '

計數= 100

嘗試

#line1

tweets_obj = tweepy.Cursor(api.user_timeline,id = username).items(count)

#line2

tweets_list = [[tweet.created_at, tweet.id, tweet.text]用於tweets_obj推文]

#line3

tweets_df = pd.DataFrame(tweets_list)

除了BaseException作為e:

print ( '出錯了, ' , str (e))

在上面的代碼片段中,line1 創建了一個包含所有推文的可迭代對象,並將其分配給變量“tweets_obj”。 完成創建可迭代對像後,讓我們對其進行迭代並提取所有數據。

我們只提取了一些屬性,例如“created_at”、“id”、“text”,並將它們附加到 2D 數組中的每個條目中。 每個條目都有我們抓取的每條推文的所有數據。 現在我們有了一個以屬性作為每個條目的二維數組,我們可以使用“pd.DataFrame()”語法將其轉換為數據框。

將數組轉換為數據框的原因是更靈活、預定義方法的可用性以及易於訪問,使其在數據科學項目的所有數據結構中脫穎而出。

同樣,讓我們看一下用於抓取具有特定文本查詢的數據的代碼。

text_query = '本地人聲'

計數= 100

嘗試

#line1

tweets_obj = tweepy.Cursor(api.search,q = text_query).items(count)

#line2

tweets_list = [[tweet.created_at, tweet.id, tweet.text]用於tweets_obj推文]

#line3

df = pd.DataFrame(tweets_list)

除了BaseException作為e:

print ( '出錯了, ' , str (e))

在上面的代碼片段中,一切都與前面的代碼片段相同。 最後,我們創建了一個數據框,其中包含所有包含文本查詢“vocal for local”的推文。

如果您正在尋找更具體或自定義的數據抓取,例如包括更多屬性,如轉推數、收藏數等。我們可以自定義語法並提取 tweepy 提供的其他屬性。 要進一步閱讀 tweepy 提供的其他屬性,請查看文檔

孿生

Twint API 不需要任何開發人員帳戶憑據,您無需任何授權密鑰即可輕鬆抓取推文。 此外,twint 沒有任何限制,例如推文數量、時間範圍、抓取限制等。Twint 為您提供無縫的數據抓取和易於使用的 API。

我們可以使用來自 twint API 的用戶名打印一個人的關注者列表。

t_obj = twint.Config()

t_obj.Username = sundarpichai

twint.run.Followers(t_obj)

在上面的代碼片段中,twint.Config() 配置了 twint API 並使事情開始。 在分配對像後,我們可以將該引用用於我們的工作,“t_obj.Username”分配我們輸入的用戶名。 並且 twint.run.Followers 執行對該用戶名的所有關注者的搜索。

我們還可以將抓取的數據存儲到類似於 tweepy API 的數據框中。

t_obj.Limit = 100

t_obj.Username = sundarpichai

t_obj.Pandas =

twint.run.Followers(t_obj)

result_df = twint.storage.panda.User_df

片段中的所有內容都與之前的片段幾乎相同,只是多了一行語法“twint.storage.panda.User_df”,它將抓取的數據轉換為數據幀。 結果數據框由給定用戶名的關注者列表組成。

現在我們已經看到了抓取特定用戶名的關注者數據,讓我們看一下抓取特定帳戶推文的代碼。

t_obj.Search = 來自:@sundarpichai

t_obj.Store_object = True

t_obj.Limit = 20

twint.run.Search(t_obj)

推文= t.search_tweet_list

打印(推文)

在上面的代碼片段中,我們正在配置對象來搜索特定人的推文,我們還可以在抓取時使用語法“t_obj.Limit”設置推文的限制。 運行搜索後,它會創建所有推文的列表,我們可以根據需要將其分配給局部變量。

在看到特定帳戶的抓取信息片段後,您可能會有一個快速的問題,即如何抓取包含特定關鍵字的推文? 不是問題 twint 對此有解決方案。

t_obj.Search = 數據科學

t_obj.Store_object = True

t_obj.Limit = 100

twint.run.Search(t_obj)

推文= t.search_tweet_list

打印(推文)

上面的代碼段與從特定帳戶中抓取推文的代碼段相同,但在 line1 中有一個區別。 我們還可以根據自己的方便將其轉換為數據框。

有關 twint API 的進一步閱讀,請查看他們的存儲庫和文檔

結論

我們已經了解抓取數據的重要性。 瀏覽了兩個 API 及其用於抓取 Twitter 數據的功能。 看到了一些將抓取的數據轉換為我們需要的文件格式的方法。 現在您已經了解了這些 API,開始為您的數據科學項目抓取數據!

upGrad我們很樂意為您提供幫助,也想讓您了解通過學習 Python 可以獲得的機會。 Python 已廣泛用於機器學習和數據科學這兩種最流行和新興的技術。 學習 Python 並了解這些技能將使您在您的領域中脫穎而出並獲得更好的職業機會。

我們與行業專家和頂級學術機構一起開發了許多課程,為您提供在該領域取得優異成績所需的所有技能。 一些可以幫助您利用 Python 知識並增加職業前景的課程:

數據科學:

查看 upGrad使用 IIIT-B 開發的在線數據科學課程,這是一門成熟的數據科學課程,可以進入該領域並用您的知識在行業中留下印記。

數據科學理學碩士:與利物浦約翰摩爾斯大學和 IIIT-B 合作開發,獲得世界頂尖大學之一的數據科學碩士學位。

機器學習:

機器學習和人工智能高級認證:印度最好的教育機構之一 IIT madras 與 upGrad 合作,為個人開設了機器學習高級課程,讓個人通過本課程全面了解機器學習。

機器學習和人工智能理學碩士:利物浦約翰摩爾斯大學和 IIIT-B 與 upGrad 合作,提供完整的理學碩士學位,供個人詳細學習技術並獲得該技術的正式學位,為成功鋪平道路這個領域的路徑。

機器學習和人工智能 PG 文憑:IIIT-B 和 upGrad 攜手合作,幫助個人有機會參加為期 12 個月的機器學習和人工智能課程,並有機會通過本課程進入這項技術。

什麼是數據抓取?

數據抓取是指計算機軟件從另一個程序創建的輸出中抓取數據的過程。 網頁抓取是一種數據抓取,用於從不同的網站收集數據或信息。 在網絡抓取中,應用程序用於從網站收集有價值的信息。 網頁抓取程序可以使用 HTML(超文本傳輸協議)或網絡瀏覽器快速輕鬆地訪問 WWW(萬維網)。

為什麼在 Twitter 上需要數據抓取?

社交媒體上的數據抓取有助於跟踪、評估和審查平台上可用的數據。 Twitter 是最受歡迎的平台,抓取 Twitter 數據有助於用戶分析用戶行為、競爭策略、情緒分析,並從人們、同行和企業的推文中及時了解世界上最受歡迎的社交渠道上發生的事情對你很重要。 Twitter 數據抓取服務可以在最短的時間內處理您的端到端需求,並為您提供必要的數據。 例如,Twitter 僅允許爬蟲通過其 API 收集數據,以限制有關其用戶及其活動的信息量。

什麼是 API?

應用程序編程接口是允許數字設備、軟件程序和數據服務器相互通信的一小段代碼,它們是我們目前所依賴的許多服務的重要支柱。 API 將計算機或軟件相互連接起來,而不是用戶界面將計算機連接到人。 它不是為任何人(最終用戶)直接使用而設計的,除了將其合併到軟件中的計算機程序員之外。 API 通常由許多組件組成,這些組件充當程序員的工具或服務。