Как предотвратить удаление цикла for при каждом перезапуске цикла?

#python #web-scraping #twitter

Вопрос:

Предыстория: Я создаю скребок для твитов, используя snscrape, чтобы удалять твиты от представителей правительства, заседающих в Палате представителей и Сенате. Твиты, которые я просматриваю, я просматриваю на предмет ключевых слов, связанных с «кибербезопасностью» и «конфиденциальностью». Я использую словарь слов для поиска. Обычно у меня было бы гораздо больше участников в списке имен пользователей, но я просто пытаюсь протестировать небольшое число, чтобы оно работало в первую очередь.

Проблема: я настроил вложенные циклы для запуска через каждое имя пользователя для проверки и словарь слов для сканирования. На выходе отображается только последний человек в моем списке имен пользователей. Я не могу понять, почему. Это похоже на то, что каждый раз, когда цикл for перезапускается, он стирает последнего человека, которого он только что проверил.

Код:

 import os import pandas as pd  tweet_count = 500 username = ["SenShelby", "Ttuberville", "SenDanSullivan"] text_query = ["cybersecurity", "cyber security", "internet privacy", "online privacy", "computer security", "health privacy", "privacy", "security breach", "firewall", "data"] since_date = "2016-01-01" until_date = "2021-10-14"  for person in username:  for word in text_query:  os.system("snscrape --jsonl --progress --max-results {} --since {} twitter-search '{} from:{} until:{}'gt; user-tweets.json".format(tweet_count, since_date, word, person, until_date))  tweets_framework = pd.read_json('user-tweets.json', lines=True) tweets_framework.to_csv('user-tweets.csv', sep=',', index=False)  

Любая помощь будет очень признательна!

Ответ №1:

сначала у вас должно быть уникальное имя для JSON каждого пользователя.

во-вторых, вам нужно запустить json в csv для каждого пользователя (если это то, что вы пытаетесь сделать).

 for person in username:  for word in text_query:  filename = '{}-{}-tweets'.format(person, word)  os.system("snscrape --jsonl --progress --max-results {} --since {} twitter-search '{} from:{} until:{}'gt; {}.json".format(tweet_count, since_date, word, person, until_date, filename))   tweets_framework = pd.read_json('{}.json'.format(filename), lines=True)  tweets_framework.to_csv('{}.csv'.format(filename), sep=',', index=False)