当前位置: 首页 > 知识库问答 >
问题:

无法获取Tweet的国家/地区- Twython API

齐承泽
2023-03-14

我正在使用以下代码来收集与某个主题相关的推文,但在我提取的所有推文中,“places”属性为“无”。我做错了什么吗?此外,该代码旨在提取现有的推文,我不需要流式处理API解决方案,也不寻找流式处理API的这种解决方案:https://www.quora.com/How-can-I-get-a-stream-of-tweets-from-a-particular-country-using-Twitter-API

api =   Twython(consumer_key, consumer_secret, access_key, access_secret)

tweets                          =   []
MAX_ATTEMPTS                    =   200
COUNT_OF_TWEETS_TO_BE_FETCHED   =   10000
in_max_id = sys.argv[1]
next_max_id = ''
for i in range(0,MAX_ATTEMPTS):

    if(COUNT_OF_TWEETS_TO_BE_FETCHED < len(tweets)):
        break # we got 500 tweets... !!

    #----------------------------------------------------------------#
    # STEP 1: Query Twitter
    # STEP 2: Save the returned tweets
    # STEP 3: Get the next max_id
    #----------------------------------------------------------------#

    # STEP 1: Query Twitter
    if(0 == i):
        # Query twitter for data. 
        results    = api.search(q="#something",count='100',lang='en',max_id=in_max_id,include_entities='true',geo= True)
    else:
        # After the first call we should have max_id from result of previous call. Pass it in query.
        results    = api.search(q="#something",include_entities='true',max_id=next_max_id,lang='en',geo= True)

    # STEP 2: Save the returned tweets
    for result in results['statuses']:

        temp = ""
        tweet_text = result['text']
        temp += tweet_text.encode('utf-8') + " "
        hashtags = result['entities']['hashtags']
        for i in hashtags:
            temp += i['text'].encode('utf-8') + " " 
        print result
        #temp += i["place"]["country"] + "\n"
        #output_file.write(temp)




    # STEP 3: Get the next max_id
    try:
        # Parse the data returned to get max_id to be passed in consequent call.
        next_results_url_params    = results['search_metadata']['next_results']
        next_max_id        = next_results_url_params.split('max_id=')[1].split('&')[0]
    except:
        # No more next pages
        break

共有3个答案

冯流觞
2023-03-14

不是所有的tweet都有tweet_text、place、country、language等字段。,

因此,要避免KeyError,请使用以下方法。修改您的代码,以便在找不到您要查找的时,返回默认值。

result.get('place', {}).get('country', {}) if result.get('place') != None else None

在这里,上面的行意味着“在获取关键位置后搜索关键国家/地区(如果存在),否则返回 None

荀增
2023-03-14

如果place字段是您应用程序将处理的所有推文的必须项,那么您可以将搜索限制在一个地方,以确保所有结果肯定会包含它。

您可以通过设置Geocode(纬度、经度、半径[km/mi])参数来执行此操作,以将您的搜索限制在一个区域内。

通过Twython的此类请求的示例是:

geocode = '25.032341,55.385557,100mi'
api.search(q="#something",count='100',lang='en',include_entities='true',geocode=geocode)
贝镜
2023-03-14

简短的回答是,不,你没做错什么。所有place标签都为空的原因是因为从统计上讲,它们不太可能包含数据。只有大约1%的推文在其place标签中包含数据。这是因为用户很少在推特上发布他们的位置。默认情况下位置是关闭的。

下载100条或更多推文,您可能会发现放置标签数据。

 类似资料:
  • 问题内容: 我从这个答案的代码中得到了国家iso : 如何获取国家/地区的前缀电话号码? 例如il的+972。 问题答案: 我找到了可以在csv文件中获取映射的地方。在这里检查。 另外,我将其更改为将国家/地区代码转换为电话前缀的类。这里是:

  • 问题内容: 我已经找到了针对Objective-C的答案,但是林先生很难迅速做到这一点。 我用它来获取当前位置的国家代码: 但是,如何将该国家/地区代码转换为国家/地区名称,例如在此示例中,将“ US”转换为“ United States”? 问题答案: 迅捷3

  • 问题内容: 我想获取印度的货币格式,所以我需要一个印度对象。但是只有几个国家的常数(a )为常数,而印度不是其中一个。 要获取美国和英国的货币符号,我可以执行以下操作: 使用常量和。如果我想获取印度货币格式,该怎么办? 问题答案: 根据JDK发行说明,您具有区域代码(印地语)和(英语)。

  • 我如何从这个具有LODASH的国家数组中获得每个的货币数组?我以前有这个getCurrencys函数,但是我不能用它获得符号,所以现在我创建了这个,但是它正在创建重复的东西,比如这个

  • 问题内容: 这里有国家代码列表,我需要在每个代码上附加表情符号标志。有没有办法从中提取unicode或为国家/地区代码找到表情符号? 这个npm示例看起来与我的目标相似(但使用十六进制作为输入)https://github.com/thekelvinliu/country-code- emoji/blob/master/src/index.js 问题答案: 此代码段对我有用。只需替换为您喜欢的任何

  • 我正在使用谷歌日历API V3。 我正在尝试列出所选国家的所有假日https://www.googleapis.com/calendar/v3/calendars/en.uk#holiday@group.v.calendar.google.com/events?key=mykey 但首先我需要用所有支持的国家/地区ID创建一个select。我在这里找到了国家ID列表:https://gist.gi