I have an key error when running this code when running in jupyter notebook. Jupyter Notebook can't traceback the 'screen_name' when I run a research by scraping Twitter.
Here is the environment that I use for my code.
import spacy
pip install twitterscraper
import nltk
nltk.download('punkt')
nltk.download('wordnet')
from nltk import sent_tokenize, word_tokenize
from nltk.stem.snowball import SnowballStemmer
from nltk.stem.wordnet import WordNetLemmatizer
from nltk.corpus import stopwords
import pandas as pd
import numpy as np
import re
import spacy
nlp = spacy.load(r'C:\Users\tnguy\anaconda3\Lib\site-packages\en_core_web_sm\en_core_web_sm-3.0.0')
Then, I run this code, Jupyter Notebook can't find traceback and return the value for 'screen name' by searching the user name.
from twitterscraper import query_tweets
from twitterscraper.query import query_tweets_from_user
import datetime as dt
import pandas as pd
begin_date = dt.date(2020,7,1)
end_date = dt.date(2020,7,13)
limit = 100
lang = 'english'
#Use this to search a specific user
user = 'realDonaldTrump'
tweets = query_tweets_from_user(user)
df = pd.DataFrame(t.__dict__ for t in tweets)
df = df.loc[df['screen_name'] == user]
df = df['text']
df
It shows a key error:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2894 try:
-> 2895 return self._engine.get_loc(casted_key)
2896 except KeyError as err:
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()
KeyError: 'screen_name'
The above exception was the direct cause of the following exception:
KeyError Traceback (most recent call last)
<ipython-input-30-bf2a4d782174> in <module>
18 df = pd.DataFrame(t.__dict__ for t in tweets)
19
---> 20 df = df.loc[df['screen_name'] == user]
21
22 df = df['text']
~\anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
2900 if self.columns.nlevels > 1:
2901 return self._getitem_multilevel(key)
-> 2902 indexer = self.columns.get_loc(key)
2903 if is_integer(indexer):
2904 indexer = [indexer]
~\anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2895 return self._engine.get_loc(casted_key)
2896 except KeyError as err:
-> 2897 raise KeyError(key) from err
2898
2899 if tolerance is not None:
KeyError: 'screen_name'