Как итерировать с твипи, исправление

avatar
Oswaldo Echeverria
9 августа 2021 в 01:00
38
1
0

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

import sys, tweepy, csv, re

consumerKey = 'XXX'
consumerSecret = 'XXX'
accessToken = 'XXX'
accessTokenSecret = 'XXXX'

def DownloadData():
  #Autenticacion 
  auth = tweepy.OAuthHandler(consumerKey, consumerSecret)
  auth.set_access_token(accessToken, accessTokenSecret)
  api = tweepy.API(auth)

  #Enter Stock y cantidad de busqueda
  searchStock = input('Enter stock name: ')
  numOfSearch = int(input('Enter how many tweets to search  '))

  #searching tweets
  tweets = tweepy.Cursor(api.search, q=searchStock, lang = "en",).items(numOfSearch) 

  tweets = DownloadData()
  for tweet in tweets:
    print(tweet.text)
    tweets.next()

Enter stock name: amazon
Enter how many tweets to search 10
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-14-d80e20f5a4da> in <module>()
      1 tweets = DownloadData()
----> 2 for tweet in tweets:
      3   print(tweet.text)

TypeError: 'NoneType' object is not iterable
Источник
Talha Anwar
9 августа 2021 в 03:28
0

потому что вы перезаписываете переменную твитов

Ответы (1)

avatar
Talha Anwar
9 августа 2021 в 03:35
0

Вы перезаписываете переменную tweets, которая хранит все твиты функцией DownloadData. Вот правильное рабочее решение.

def DownloadData():
    #Autenticacion 
    auth = tweepy.OAuthHandler(consumerKey, consumerSecret)
    auth.set_access_token(accessToken, accessTokenSecret)
    api = tweepy.API(auth)
      
    #Enter Stock y cantidad de busqueda
    searchStock = input('Enter stock name: ')
    numOfSearch = int(input('Enter how many tweets to search  '))
      
    #searching tweets
    tweets = tweepy.Cursor(api.search, q=searchStock, lang = "en",).items(numOfSearch) 
    for tweet in tweets:
      print(tweet.text)
      
DownloadData()

Нет необходимости tweets.next()