我正在尝试将tweet实时流式传输到csv文件,在此过程中,我希望提取全文和相应的url(其格式为https://twitter.com/ user screen_name / status / tweet id )是该tweet的链接,而不是用户在tweet中提到的链接。
由于我正在使用流API,因此tweet_mode = extended选项对我不起作用。下面是我用来获取数据的代码,但仅用于某些推文,我将获得完整的文本以及url,其余部分则不是。
runtime = 10
class listener(StreamListener):
def on_data(self,data):
data1 = json.loads(data)
time = data1["created_at"]
if data1["truncated"] == "false":
tweet = unidecode(data1["full_text"])
else:
tweet = unidecode(data1["text"])
url1 = data1["entities"]["urls"]
b = None
for a in url1:
b = a["expanded_url"]
if hasattr(data1,"retweeted_status:"):
tweet = unidecode(data1["tweet"]["text"])
url = b
file = open('TEST_MAR.csv', 'a')
csv_writer = csv.writer(file)
csv_writer.writerow([time, tweet1, url])
file.close()
auth = OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token,access_token_secret)
twitterStream = Stream(auth, listener())
twitterStream.filter(track=["USA"], async = True)
time.sleep(runtime)
twitterStream.disconnect()
我尝试捕获两种情况下的full_text和url字段-无论是传统的tweet还是扩展的tweet,但结果都不理想。
请告知。