【问题标题】:How to get location wise tweets using tweepy for streaming API?如何使用 tweepy 为流 API 获取位置明智的推文?
【发布时间】:2014-09-26 21:59:49
【问题描述】:

我正在尝试从旧金山提取所有包含费德勒的推文。我的位置关键字出错。

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')

错误是

Traceback(最近一次通话最后一次):

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

【问题讨论】:

    标签: twitter tweepy


    【解决方案1】:

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

    因此,如果您想找到与费德勒有关的所有内容,您可以搜索

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

    以及您将使用的位置

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

    请记住,位置不是字符串,也不需要引号。 Twitter 还使用 JSON 格式来表示经度、纬度的位置,这与谷歌地图和其他服务提供的典型纬度、经度坐标不同。

    不幸的是,您将无法跟踪包含来自旧金山的费德勒的推文,因为当您拥有位置和跟踪过滤器时,它会变成跟踪 OR 位置查询。这意味着您将收到包含费德勒或来自旧金山的推文。我不知道您可以对各种过滤器进行 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

    希望这会有所帮助。

    【讨论】:

    • 如何找到威斯康星州麦迪逊的四个参数定位点?我只知道经纬度
    • @MonaJalal,两个角必须同时包含纬度和经度。所以前两个数字是边界框的一个点,另外两个 lat,long 定义边界框的另一个点。希望这是有道理的!
    猜你喜欢
    • 2016-05-18
    • 2016-08-11
    • 2021-02-25
    • 2019-04-09
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    相关资源
    最近更新 更多