Можно ли сократить время, затрачиваемое на GetOldTweets3? - PullRequest
1 голос
/ 21 апреля 2020

Я недавно попробовал GetOldTweets3 (https://pypi.org/project/GetOldTweets3/), чтобы загрузить твиты, содержащие слово "iPhone". Код можно увидеть ниже, где он получает все твиты, а затем записывает их в CSV.

def get_tweets(keyword, start_date, end_date, max_tweets):

    start_time = time.time()

    tweetCriteria = got.manager.TweetCriteria().setQuerySearch(keyword).setSince(start_date).setUntil(end_date).setMaxTweets(max_tweets).setLang("en")

    # List of object get stored in "tweets" variable
    tweets = got.manager.TweetManager.getTweets(tweetCriteria)

    elapsed_time = time.time() - start_time
    print(elapsed_time)

    with open(url + "/twitter_scrape_" + start_date + ".csv", "w", encoding = "utf-8") as csvfile:
        fieldnames = ["Date", "Username", "Tweet", "No. of Retweets"]
        writer = csv.DictWriter(csvfile, fieldnames = fieldnames, lineterminator = "\n")

        writer.writeheader()

        for tweet in tweets:
            writer.writerow({"Date": tweet.date,
                             "Username": str(tweet.username), 
                             "Tweet": str(tweet.text),
                             "No. of Retweets": str(tweet.retweets)})

    print("Data is stored in: " + url)


get_tweets("iPhone", "2013-09-10", "2013-09-11", 10000)

Однако, это время (в секундах), когда я пытаюсь загрузить твиты.

10 твитов: ~ 2 секунды | 1000 твитов: ~ 126 секунд | 10 000 твитов: ~ 1400 секунд

Я пытаюсь загрузить дневные твиты, связанные с ключевым словом. Есть ли способ: 1) Для меня, чтобы проверить, в каком прогрессе я нахожусь, так как приведенный выше код будет просто загружаться, но я не смог проверить статус, и 2) Есть ли более быстрый способ получить данные помимо использования GetOldTweets3 ?

Спасибо заранее за помощь!

1 Ответ

0 голосов
/ 21 апреля 2020
  1. попробуйте Python, чтобы распечатать строку состояния и процент
  2. попробуйте использовать https://docs.python.org/3/library/concurrent.futures.html#threadpoolexecutor - пример для многопоточности. Вы можете запустить некоторый профильный тест, чтобы увидеть, какая часть времени стоит больше всего. Я думаю, это открытая часть URL. Так что многопоточность поможет вам.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...