twitter - 如何使用 tweepy for Streaming API 获取位置明智的推文?

标签 twitter tweepy

我正在尝试从旧金山提取所有包含费德勒的推文。我在使用locations关键字时遇到错误。

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import csv
access_token = ''
access_secret = ''
consumer_key = ''
consumer_secret = ''
csvfile = open('StreamSearch.csv','a')
csvwriter = csv.writer(csvfile, delimiter = ',')


class StdOutListener(StreamListener):

    def on_data(self, data):
        print data
        return True

    def on_error(self, status):
        print status


if __name__ == '__main__':
    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)
    stream = Stream(auth, l)
    stream.filter(track='federer',locations = '-122.75,36.8,-121.75,37.8')
    #stream.filter(track='djokovic')

错误是

回溯(最近一次调用最后一次):

File "C:\EclipseWorkspaces\csse120\9sept\src\SearchTweets.py", line 35, in <module>
    stream.filter(track='federer',locations = '-122.75,36.8,-121.75,37.8')
  File "C:\Python27\lib\site-packages\tweepy\streaming.py", line 307, in filter
    raise TweepError("Wrong number of locations points, "
tweepy.error.TweepError: Wrong number of locations points, it has to be a multiple of 4

最佳答案

您的代码在stream.Filter阶段之前都很好。 Tweepy 将过滤器查询视为列表,而不是单个字符串。

因此,如果您想找到有关费德勒的一切,您会搜索

stream.Filter ( track = ['federer'])

以及您将使用的位置

stream.Filter ( locations = [-122.75,36.8,-121.75,37.8] )

请记住,位置不是字符串,不需要引号。此外,Twitter 对经度、纬度位置使用 JSON 格式,这与 Google map 和其他服务给出的典型纬度、经度坐标不同。

不幸的是,您将无法跟踪包含来自旧金山的费德勒的推文,因为当您拥有位置和跟踪过滤器时,它会变成跟踪或位置查询。这意味着您将收到包含费德勒或来自旧金山的推文。我不知道有什么方法可以对各种过滤器进行 AND 查询。我不相信 Twitter 支持他们。您的选择是收集来自旧金山的推文,然后查看是否有提及费德勒或费德勒的推文,然后按位置过滤它们。您仍然可以连接位置和跟踪,但这将是这两个的 OR 查询,如下所示:

stream.Filter ( track = ['Federer'], locations = [-122.75,36.8,-121.75,37.8] )

Tweepy 和 Twitter 参数的文档可在以下位置找到: https://dev.twitter.com/streaming/overview/request-parameters http://tweepy.readthedocs.org/en/v2.3.0/api.html?highlight=location

希望这有帮助。

关于twitter - 如何使用 tweepy for Streaming API 获取位置明智的推文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25739073/

相关文章:

python - 使用 cashtags 的 Tweepy stream.filter

python - 带有 Tweepy 的 Twitter Streaming API 拒绝 oauth

oauth - 使用 OAuth 签署 twitter 用户流请求

Python TweetStream 访问被拒绝

python - Tweepy 空白搜索

python - tweepy stream.filter() 方法不能正常工作

python - 在 JSON/Python 中删除 twitter 扩展推文列的不必要的详细信息

python - 获取 Twitter 用户的整个用户时间线

python - 查找和添加 Twitter 用户?

python - 关注使用 python tweepy 发布特定主题标签的用户?