我想从帖子中检索推特用户的GPS经纬度坐标。我需要高粒度的地理位置,所以我想收集其位置的推文由Twitter通过GPS自动记录,而不是由用户自我报告。
以前,Twitter通过tweepy.Stream
类提供这种访问,例如:
import tweepy
LOCATION = [-124.7771694, 24.520833, -66.947028, 49.384472]
class MyStreamListener(tweepy.Stream):
# class methods
stream = MyStreamListener(apikey,apikeysecret,accesstoken,accesstokensecret)
stream.filter(locations=LOCATION)
然而,正如推特文档中所述,新的推特应用程序在2022年4月29日之后不能使用Stream
类。
在2022年4月29日或之后创建的新Twitter开发者应用程序将无法访问Stream使用的Twitter API v1.1端点v1.1状态/样本和v1-1状态/过滤器。Twitter API v2可以与StreamingClient一起使用。
不幸的是,StreamingClient在其filter()
或该类的任何其他方法中都不提供locations
参数。
这是否意味着Twitter停止向研究人员提供这些元数据?
首先,从您最初的问题中解决这个评论。。。
因此希望收集位置由自动记录的推文推特对全球定位系统进行了粗略的评估,而不是用户自我报告。
Twitter根本不会自动记录用户位置。这完全取决于用户选择将位置数据添加到推文中。相对较小比例的推文携带位置信息,而携带特定GPS信息的推文要少得多,因为几年前推特应用程序中删除了添加该级别信息的选项。
要了解详细信息。。。
在现代版本的Twitter API中,流媒体的工作方式有所不同。
在v1.1中,您将提供";轨道";以及";过滤器";选项到单个API端点,然后在匹配出现时进行侦听。
在API的v2中,您有一个连接(如果使用Tweepy,则通过StreamingClient
(,并通过一个单独的端点(Tweepy中的StreamRule
(创建规则。这些可以包含多个运算符。
value(str|None(–规则文本。如果您使用的是标准项目的基本访问级别,您可以使用运算符,最多可以提交25个并发规则,并且可以提交规则最多512个字符长。如果您正在使用学术研究项目的基本访问级别,您可以使用所有可用的运算符,最多可以提交1000个并发规则,并且可以提交规则长度最多为1024个字符。
您需要参考有关创建规则搜索查询的Twitter文档。在高级别上,您可以使用has:geo
操作符来查找具有地理信息的推文,也可以使用place:
操作符来缩小范围。这就是您可以使用当前API根据位置进行过滤的方法。请注意,可用的运营商可能会因您的Twitter API访问级别而异。