在Python中按地点过滤Twitter流

3 投票
2 回答
1794 浏览
提问于 2025-04-18 09:58

我正在使用Python的Twitter API封装库(不是tweepy,也许这就是我的问题)。另外,我在使用Spyder这个开发环境。我可以很容易地通过关键词进行过滤,但在通过位置进行过滤时遇到了麻烦。我尝试了以下代码:

auth = twitter.oauth.OAuth(OAUTH_TOKEN,OAUTH_TOKEN_SECRET,
                           CONSUMER_KEY,CONSUMER_SECRET)                         
twitter_api = twitter.Twitter(auth=auth)
twitter_stream = twitter.TwitterStream(auth=twitter_api.auth)
stream = twitter_stream.statuses.filter(locations=[-6.38,49.87,1.77,55.81])

但是我得到了这个错误:

details: Location track items must be given as pairs of comma separated lat/longs:
[Ljava.lang.String;@1f1dbc92

我尝试了几种不同的写法,但都没有成功,比如传递字符串和浮点数。有没有人能告诉我该怎么正确地做这个?

2 个回答

1

问题出在这一行 stream = twitter_stream.statuses.filter(locations=[-6.38,49.87,1.77,55.81])

locations 应该是一个包含元组的列表,每个元组里有一个纬度和一个经度。

一个可能的格式是 >> stream = twitter_stream.statuses.filter(locations=[(-6.38,49.87), (1.77,55.81)])

4

其实,经过一些猜测,locations这个参数应该是一个字符串,里面包含用逗号分隔的经纬度对,第一个对代表你关注区域的西南角,第二个对则是东北角。所以在你的例子中,你应该这样写:

stream = twitter_stream.statuses.filter(locations="-6.38,49.87,1.77,55.81")

撰写回答