在csv文件中流式传输tweet的全文和URL

时间:2019-03-02 23:19:46

标签: python-3.x listener twitter-oauth twitter-streaming-api csv-write-stream

我正在尝试将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,但结果都不理想。

请告知。

0 个答案:

没有答案