2017-04-03 2 views
0

: http://adilmoujahid.com/posts/2014/07/twitter-analytics/트위터 스트리밍 API : 출력 트윗 문구없이 데이터가 내가이 튜토리얼에 주어진 코드를 사용하고

목적은 다음, 트위터 스트리밍 API를 사용하여 데이터를 수집 JSON 형식의 데이터를 저장하고하는 것입니다 이 데이터에서 트윗을 얻으십시오. 튜토리얼의 두 번째 단계에서,이 트윗을 얻기 위해이 코드를 사용 : 나는 DataFrame 트윗에 tweets_data의 부분 집합을 사용하고

tweets_data = [] 
tweets_file = open(tweets_data_path, "r") 
for line in tweets_file: 
    try: 
     tweet = json.loads(line) 
     tweets_data.append(tweet) 
    except: 
     continue 

tweets = pd.DataFrame() 
tweets['text'] = map(lambda tweet: tweet['text'], tweets_data[0:2377]) 

. 그러나 tweets_data 지수 2,376에 대신 트윗과 문자에 대한 데이터를 포함하는, 그것은이 가지고

{u'limit': {u'track': 4, u'timestamp_ms': u'1491153253907'} 

을 따라서 tweets_data [0 : 2,377]를 사용 KeyError를 반환 '문자'. 인덱스 2376의 사전 요소에는 다른 요소처럼 u'text '가 없습니다. 색인 2376 아래의 하위 집합을 사용하면됩니다. 그러나 JSON 데이터에 더 많은 요소가 있으므로 2376을 건너 뛸 수 없습니다. tweets_data [0 : 2377] + tweets_data [2377 : len (tweets_data)]도 KeyError : 'text'를 반환합니다.

그럼 2376 번 요소는 어떻게됩니까? 데이터 프레임에 '텍스트'열을 만들기 전에 요소를 제외하고 요소를 필터링해야합니까? 아니면 더 좋은 방법이 있습니까?

답변

1

해당 요소는 API 호출의 로그 데이터처럼 보입니다.

그냥 같이, 각 라인을 저장하기 전에 텍스트를 확인 :

if 'text' in tweet: 
    tweets_data.append(tweet) 
관련 문제