繁体   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