собирать твиты используя твиповый курсор - PullRequest
0 голосов
/ 15 мая 2019

Я хочу собрать твиты (в формате словаря Python), содержащие некоторые ключевые слова, в CSV-файл. Я использовал твипный курсор. Но это ничего не возвращает.

После ответа в « Управление поиском Tweepy API » я попытался собрать твиты с помощью курсора. Но код останавливается через несколько секунд, не возвращая никакого сообщения.

import TwitterCredentials
import tweepy
import csv
from tweepy import OAuthHandler
import json

def authenticate():
    auth=OAuthHandler(TwitterCredentials.consumerKey, 
    TwitterCredentials.consumerSecretKey)
    auth.set_access_token(TwitterCredentials.accessToken,
    TwitterCredentials.accessTokenSecret)
    api=tweepy.API(auth)

    return api

def collectTweet(api, query, max_tweets):
    i=1
    for tweet in tweepy.Cursor(api.search, q=query).items(max_tweets):
        loadCsvFile(json.loads(tweet))
        print(str(i)+ " ")
        i+=1


def loadCsvFile(tweet): 
    csv_file.writerow([tweet['id'],tweet['created_at'],tweet['text'],
    tweet['retweet_count'],tweet['source']])



if __name__ == '__main__':

    query=['air pollution', 'PM 2.5']
    max_tweets=500

    f=open('collected_tweets.csv', 'w')
    csv_file=csv.writer(f)
    csv_file.writerow(['id','created_at','text',
    'retweet_count','source'])

    api=authenticate()
    collectTweet(api, query, max_tweets)

Я хочу получать сообщения в формате словаря, чтобы из него можно было извлечь идентификатор, созданный_текст, текст, информацию об источнике.

Этот код не вернул ни одной ошибки и не вернул ни одного сообщения.

1 Ответ

0 голосов
/ 18 мая 2019

tweepy.cursor возвращает статус, где _json - это диктант, где присутствуют все поля твита.поэтому код должен быть

for status in tweepy.Cursor(api.search, q=query, lang='en').items(max_tweets):
           loadCsvFile(status._json)

... Тогда это сработало.

...