Я пытаюсь транслировать твиты в режиме реального времени в файл CSV, в этом процессе я хочу извлечь полный текст и соответствующий URL-адрес (который имеет формат - https://twitter.com/user имя_экранного / status / идентификатор твита ) твита, который является ссылкой этого твита, а не ссылками, упомянутыми в твите пользователем.
Поскольку я использую потоковый 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для любого сценария - будь то классический твит или расширенный твит, но результаты не являются желаемыми.
Пожалуйста, сообщите.