无法获得Tweet的国家 - Twython API

sil*_*dev 9 python twitter twython

我使用以下代码收集与特定主题相关的推文,但在我提取的所有推文中,'places'属性为None.难道我做错了什么?此外,该代码旨在提取现有的推文,我不需要流API解决方案,也不需要寻找这种流API的解决方案:https://www.quora.com/How-can-I-get-a-stream-的鸣叫-从-A-特定国-使用-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
Run Code Online (Sandbox Code Playgroud)

Rah*_*man 1

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

您可以通过设置geocode(纬度,经度,半径[km/mi])参数来将搜索限制在某个区域内。

通过 Twython 发出的此类请求的示例如下:

geocode = '25.032341,55.385557,100mi'
api.search(q="#something",count='100',lang='en',include_entities='true',geocode=geocode)
Run Code Online (Sandbox Code Playgroud)