#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)