附加变量不使用获取状态来检索推文文本
我有一个推文ID的列表,在我的计算机上的excel文件中可能大约有50,000个。我想创建一段代码,允许我从推文中提取文本,然后我可以分析......
我创建了一个变量'tweetref'来存储我可以传递的推文ID,以获取状态等以获取推文文本。我被告知很多这些推文可能不再存在,我无法分辨哪一个来自id,这就是为什么我做了'传递'除了,希望忽略所有的失败,只是得到那些工作。使用firehose api收集对我来说太贵了。
它没有吐出任何文本,即使手动替换'tweet = api.get_status(tweetref)'中的tweetref' - 使用下面注释的数字(38387433561128960),打印实际的推文
我试图从tweet ref获得第二个索引导致'列表索引超出范围' - 不确定为什么因为列表中应该有超过20个变量。不知道我做错了什么?
编辑 - 改变了
“tweetref.append(数据列表[30:50])”
至
“tweetref.extend(数据列表[30:50])”
这有助于使所有ID成为“tweetref”中的单个元素,并允许我正确地调用索引。但是,尽管如此,带有获取状态的第二个“for”循环仍然不会从推文中打印任何文本
# Import twitter related packages
import json
import tweepy
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
#import request style packages
import requests
from urllib.request import urlopen, Request
# Import excel related packages
import xlrd
import openpyxl
# Import visualisation packages
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# Store OAuth authentication credentials in relevant variables
access_token = "private"
access_token_secret = "private"
consumer_key = "private"
consumer_secret = "private"
# Pass OAuth details to tweepy's OAuth handler
auth = tweepy.OAuthHandler("private", "private")
auth.set_access_token("private", "private")
api = tweepy.API(auth)
# Read and write to excel
dataFileUrl = R"C:/Users/ebaba/Desktop/algeria1.xlsx"
# Create pandas data frame out of Tweet ID Column of file
data = pd.read_excel(dataFileUrl, usecols = ['Tweet'])
# Convert data frame into a list
datalist = data.values.tolist()
tweetref = []
for t in range (0,20):
tweetref.append(datalist[30:50])
print(tweetref[1])
for i in range (0,1):
try:
tweet = api.get_status(tweetref)
#38387433561128960 - Example Working Tweet - N.44
print(tweet.text)
except:
pass
Expected result would include the tweet
'RT @mattseaton: Another fascinating dispatch from inside the pro-democracy movement in Algiers, from Karima Bennoune
which is in the datalist[30:50] range
Actual Result
Traceback (most recent call last):
File "C:\Users\ebaba\Desktop\example6.py", line 56, in <module>
print(tweetref[1])
IndexError: list index out of range
[Finished in 16.902s]
第一次通过这个for
循环:
tweetref = []
for t in range (0,20):
tweetref.append(datalist[30:50])
print(tweetref[1])
您的代码会将一个列表附加到之前为空的tweetref
。所以(可能)20项的列表成为tweetref
的元素0。这就是为什么当代码尝试访问tweetref[1]
时索引超出范围的原因。
如果你想要datalist
的所有(也许)20个元素成为tweetref
的个别元素那么你需要做一个
tweetref.extend(datalist[30:50])
要么
tweetref += datalist[30:50]
将列表附加到先前空的tweetref
会产生一个包含一个元素的列表,该元素本身就是(可能)20个元素的列表。