簡體   English   中英

如何獲得超過一周的推文(使用 tweepy 或其他 python 庫)

[英]How can I get tweets older than a week (using tweepy or other python libraries)

我一直在試圖解決這個問題,但這真的很令人沮喪。 我正在嘗試使用 Tweepy 獲取帶有特定主題標簽(大量推文)的推文。 但這不會超過一周。 我需要回到至少兩年的時間里幾個月。 這甚至可能嗎,如果有的話怎么辦?

只是為了檢查這里是我的代碼

import tweepy
import csv

consumer_key = '####'
consumer_secret = '####'
access_token = '####'
access_token_secret = '####'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# Open/Create a file to append data
csvFile = open('tweets.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)


for tweet in tweepy.Cursor(api.search,q="#ps4",count=100,\
                           lang="en",\
                           since_id=2014-06-12).items():
    print tweet.created_at, tweet.text
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])

正如您已經注意到 Twitter API 有一些限制一樣,我已經實現了一個代碼,它使用與在瀏覽器上運行的 Twitter 相同的策略來執行此操作。 看看,可以得到最老的推文: https : //github.com/Jefferson-Henrique/GetOldTweets-python

您不能使用 Twitter 搜索 API 來收集兩年前的推文。 根據文檔:

另請注意,twitter.com 上的搜索結果可能會返回歷史結果,而 Search API 通常僅提供過去一周的推文。 - Twitter 文檔

如果您需要一種獲取舊推文的方法,您可以從個人用戶那里獲取它們,因為從他們那里收集推文受數量而非時間限制(因此在許多情況下,您可以追溯到數月或數年)。 收集像Topsy這樣的推文的第三方服務也可能對您有用(自 2016 年 7 月起關閉,但存在其他服務)。

找到了一個有助於檢索舊推文的代碼。 https://github.com/Jefferson-Henrique/GetOldTweets-python

要獲取舊推文,請在提取代碼存儲庫的目錄中運行以下命令。

python Exporter.py --querysearch 'keyword' --since 2016-01-10 --until 2016-01-15 --maxtweets 1000

它返回了一個文件“output_got.csv”,在上述幾天內使用您的關鍵字發送了 1000 條推文

您需要安裝一個模塊“pyquery”才能工作

PS:您可以根據需要修改“Exporter.py”python 代碼文件以獲取更多推文屬性。

2018 年更新:Twitter 擁有高級搜索 API,可以從時間開始(2006 年)返回結果:

https://developer.twitter.com/en/docs/tweets/search/overview/premium#ProductPackages

搜索推文:30 天端點 → 提供前 30 天的推文。

搜索推文:完整存檔端點 → 提供對推文的完整和即時訪問,可追溯到 2006 年 3 月的第一條推文。

以 Python 客戶端為例: https : //github.com/twitterdev/search-tweets-python

知道這是一個非常古老的問題,但仍有一些人可能面臨同樣的問題。 經過一番挖掘,我發現 Tweepy 的搜索僅返回過去 7 天的數據,並且有時會導致購買第三方服務。 我使用了 Python 庫GetOldTweets3 ,它對我來說效果很好。 這個庫的實用程序非常簡單。 這個庫的唯一限制是我們不能在一次執行中搜索多個主題標簽,但可以同時搜索多個帳戶。

正如其他人所指出的,Twitter API 有日期限制,但沒有在 twitter.com 上實現的實際高級搜索。 因此,解決方案是使用 Python 的 Selenium 或 PhantomJS 包裝器來遍歷 twitter.com 端點。 這是某人在 Github 上發布的使用 Selenium 的實現: https : //github.com/bpb27/twitter_scraping/

使用參數“since”和“until”來調整你的時間范圍。 您目前使用的since_id 是為了對應於twitter id 值(不是日期):

for tweet in tweepy.Cursor(api.search,
                           q="test",
                           since="2014-01-01",
                           until="2014-02-01",
                           lang="en").items():

我不敢相信沒有人這么說,但是這個 git 存儲庫完全解決了我的問題。 我無法使用其他解決方案,例如 GOT 或 Twitter API Premium。

試試這個,絕對有用:

https://betterprogramming.pub/how-to-scrape-tweets-with-snscrape-90124ed006af

https://github.com/MartinBeckUT/TwitterScraper/tree/master/snscrape/cli-with-python

您可以使用Rest API使推文的發布時間超過一周。有關更多詳細信息,請訪問Twitter API參考https://dev.twitter.com/rest/reference/get/statuses/user_timeline

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM