Есть ли способ загрузить полный текст в твитер, используя python - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь загрузить твиты на основе ключевых слов, и это фрагмент кода, который я использую для этого, но проблема в том, что я не могу загрузить твит целиком. Отображаются только первые 140 символов. Как скачать полный твит?

import tweepy
import csv
import pandas as pd
####input your credentials here
consumer_key =''
consumer_secret =''
access_token =''
access_token_secret=''

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True)
#####United Airlines
# Open/Create a file to append data
csvFile = open(r'C:\Users\iiit\Desktop\tweets.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)

for tweet in tweepy.Cursor(api.search,q="#hashtag",count=1000,
                           lang="en",
                           since="2020-04-14").items():
    print (tweet.created_at, tweet.text)
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])

Ответы [ 3 ]

0 голосов
/ 07 мая 2020

Насколько мне известно, существует политика, согласно которой в режиме совместимости твиты обрезаются до 140 символов. Но этот обработчик события Status, который можно использовать для StreamListener, печатает полный текст твита или, если это ретвит, полный текст ретвита в качестве документации.

  def on_status(self, status):
        if hasattr(status, "retweeted_status"):  # Check if Retweet
            try:
                print(status.retweeted_status.extended_tweet["full_text"])
            except AttributeError:
                print(status.retweeted_status.text)
        else:
            try:
                print(status.extended_tweet["full_text"])
            except AttributeError:
                print(status.text)

Это может вам помочь. здесь

0 голосов
/ 07 мая 2020

Насколько мне известно, существует политика, согласно которой в режиме совместимости твиты обрезаются до 140 символов. Полный текст ретвитированного твита в качестве документации.

def on_status(self, status):
    if hasattr(status, "retweeted_status"):  # Check if Retweet
        try:
            print(status.retweeted_status.extended_tweet["full_text"])
        except AttributeError:
            print(status.retweeted_status.text)
    else:
        try:
            print(status.extended_tweet["full_text"])
        except AttributeError:
            print(status.text)

Это может вам помочь. здесь

0 голосов
/ 07 мая 2020

Согласно официальной документации tweepy:

Методы tweepy.API, которые возвращают объекты статуса (твиты), принимают параметр, который может быть в режиме совместимости или в расширенном режиме. Параметр по умолчанию - режим совместимости. В режиме совместимости твиты усекаются до 140 символов. Это то, что ваша программа в настоящее время делает.

Вам следует использовать расширенный режим, если вам нужен весь текст. Передайте kwag tweet_mode="extended", чтобы объявить режим, который вы собираетесь использовать. Затем вместо tweet.text используйте tweet.full_text

Ваш новый код должен выглядеть так:

for tweet in tweepy.Cursor(api.search,
    q="#hashtag", count=5, lang="en",
    since="2020-05-07", tweet_mode="extended").items():
    print (tweet.created_at, tweet.full_text)
    csvWriter.writerow([tweet.created_at, tweet.full_text.encode('utf-8')])

Я не тестировал, но он должен работать.

...