11 KiB
11 KiB
In [1]:
import snscrape.modules.twitter as sntwitter
import pandas as pd
# prepare variables
# query = '(Odense OR odense OR #odense OR #Odense) until:2022-12-17 since:2017-01-01 -filter:replies'
query = '(from:Maersk) -filter:replies'
limit = 10
tweet_list = list()
# begin scraping
for i, tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()):
# if limit is reached, break out of loop
if limit > 0 and i > limit: break
# if another 100 tweets found, tell it
if i % 10 == 0:
print(f'found {i} tweets')
tweet_list.append([tweet.date, tweet.id, tweet.content, tweet.user.username])
# create dataframe
df = pd.DataFrame(tweet_list, columns=['Datetime', 'Id', 'Text', 'Username'])Error retrieving https://api.twitter.com/2/search/adaptive.json?include_profile_interstitial_type=1&include_blocking=1&include_blocked_by=1&include_followed_by=1&include_want_retweets=1&include_mute_edge=1&include_can_dm=1&include_can_media_tag=1&skip_status=1&cards_platform=Web-12&include_cards=1&include_ext_alt_text=true&include_quote_count=true&include_reply_count=1&tweet_mode=extended&include_entities=true&include_user_entities=true&include_ext_media_color=true&include_ext_media_availability=true&send_error_codes=true&simple_quoted_tweets=true&q=%28from%3AMaersk%29+-filter%3Areplies&tweet_search_mode=live&count=100&query_source=spelling_expansion_revert_click&pc=1&spelling_corrections=1&ext=mediaStats%2ChighlightedLabel: non-200 status code 4 requests to https://api.twitter.com/2/search/adaptive.json?include_profile_interstitial_type=1&include_blocking=1&include_blocked_by=1&include_followed_by=1&include_want_retweets=1&include_mute_edge=1&include_can_dm=1&include_can_media_tag=1&skip_status=1&cards_platform=Web-12&include_cards=1&include_ext_alt_text=true&include_quote_count=true&include_reply_count=1&tweet_mode=extended&include_entities=true&include_user_entities=true&include_ext_media_color=true&include_ext_media_availability=true&send_error_codes=true&simple_quoted_tweets=true&q=%28from%3AMaersk%29+-filter%3Areplies&tweet_search_mode=live&count=100&query_source=spelling_expansion_revert_click&pc=1&spelling_corrections=1&ext=mediaStats%2ChighlightedLabel failed, giving up.
[0;31m---------------------------------------------------------------------------[0m [0;31mScraperException[0m Traceback (most recent call last) Cell [0;32mIn[1], line 10[0m [1;32m 8[0m tweet_list [39m=[39m [39mlist[39m() [1;32m 9[0m [39m# begin scraping[39;00m [0;32m---> 10[0m [39mfor[39;00m i, tweet [39min[39;00m [39menumerate[39m(sntwitter[39m.[39mTwitterSearchScraper(query)[39m.[39mget_items()): [1;32m 11[0m [39m# if limit is reached, break out of loop[39;00m [1;32m 12[0m [39mif[39;00m limit [39m>[39m [39m0[39m [39mand[39;00m i [39m>[39m limit: [39mbreak[39;00m [1;32m 13[0m [39m# if another 100 tweets found, tell it[39;00m File [0;32m~/projects/twitter_scraper/venv/lib/python3.8/site-packages/snscrape/modules/twitter.py:680[0m, in [0;36mTwitterSearchScraper.get_items[0;34m(self)[0m [1;32m 677[0m [39mdel[39;00m params[[39m'[39m[39mtweet_search_mode[39m[39m'[39m] [1;32m 678[0m [39mdel[39;00m paginationParams[[39m'[39m[39mtweet_search_mode[39m[39m'[39m] [0;32m--> 680[0m [39mfor[39;00m obj [39min[39;00m [39mself[39m[39m.[39m_iter_api_data([39m'[39m[39mhttps://api.twitter.com/2/search/adaptive.json[39m[39m'[39m, params, paginationParams, cursor [39m=[39m [39mself[39m[39m.[39m_cursor): [1;32m 681[0m [39myield from[39;00m [39mself[39m[39m.[39m_instructions_to_tweets(obj) File [0;32m~/projects/twitter_scraper/venv/lib/python3.8/site-packages/snscrape/modules/twitter.py:369[0m, in [0;36m_TwitterAPIScraper._iter_api_data[0;34m(self, endpoint, params, paginationParams, cursor, direction)[0m [1;32m 367[0m [39mwhile[39;00m [39mTrue[39;00m: [1;32m 368[0m _logger[39m.[39minfo([39mf[39m[39m'[39m[39mRetrieving scroll page [39m[39m{[39;00mcursor[39m}[39;00m[39m'[39m) [0;32m--> 369[0m obj [39m=[39m [39mself[39;49m[39m.[39;49m_get_api_data(endpoint, reqParams) [1;32m 370[0m [39myield[39;00m obj [1;32m 372[0m [39m# No data format test, just a hard and loud crash if anything's wrong :-)[39;00m File [0;32m~/projects/twitter_scraper/venv/lib/python3.8/site-packages/snscrape/modules/twitter.py:339[0m, in [0;36m_TwitterAPIScraper._get_api_data[0;34m(self, endpoint, params)[0m [1;32m 337[0m [39mdef[39;00m [39m_get_api_data[39m([39mself[39m, endpoint, params): [1;32m 338[0m [39mself[39m[39m.[39m_ensure_guest_token() [0;32m--> 339[0m r [39m=[39m [39mself[39;49m[39m.[39;49m_get(endpoint, params [39m=[39;49m params, headers [39m=[39;49m [39mself[39;49m[39m.[39;49m_apiHeaders, responseOkCallback [39m=[39;49m [39mself[39;49m[39m.[39;49m_check_api_response) [1;32m 340[0m [39mtry[39;00m: [1;32m 341[0m obj [39m=[39m r[39m.[39mjson() File [0;32m~/projects/twitter_scraper/venv/lib/python3.8/site-packages/snscrape/base.py:216[0m, in [0;36mScraper._get[0;34m(self, *args, **kwargs)[0m [1;32m 215[0m [39mdef[39;00m [39m_get[39m([39mself[39m, [39m*[39margs, [39m*[39m[39m*[39mkwargs): [0;32m--> 216[0m [39mreturn[39;00m [39mself[39;49m[39m.[39;49m_request([39m'[39;49m[39mGET[39;49m[39m'[39;49m, [39m*[39;49margs, [39m*[39;49m[39m*[39;49mkwargs) File [0;32m~/projects/twitter_scraper/venv/lib/python3.8/site-packages/snscrape/base.py:212[0m, in [0;36mScraper._request[0;34m(self, method, url, params, data, headers, timeout, responseOkCallback, allowRedirects)[0m [1;32m 210[0m msg [39m=[39m [39mf[39m[39m'[39m[39m{[39;00m[39mself[39m[39m.[39m_retries [39m+[39m [39m1[39m[39m}[39;00m[39m requests to [39m[39m{[39;00mreq[39m.[39murl[39m}[39;00m[39m failed, giving up.[39m[39m'[39m [1;32m 211[0m logger[39m.[39mfatal(msg) [0;32m--> 212[0m [39mraise[39;00m ScraperException(msg) [1;32m 213[0m [39mraise[39;00m [39mRuntimeError[39;00m([39m'[39m[39mReached unreachable code[39m[39m'[39m) [0;31mScraperException[0m: 4 requests to https://api.twitter.com/2/search/adaptive.json?include_profile_interstitial_type=1&include_blocking=1&include_blocked_by=1&include_followed_by=1&include_want_retweets=1&include_mute_edge=1&include_can_dm=1&include_can_media_tag=1&skip_status=1&cards_platform=Web-12&include_cards=1&include_ext_alt_text=true&include_quote_count=true&include_reply_count=1&tweet_mode=extended&include_entities=true&include_user_entities=true&include_ext_media_color=true&include_ext_media_availability=true&send_error_codes=true&simple_quoted_tweets=true&q=%28from%3AMaersk%29+-filter%3Areplies&tweet_search_mode=live&count=100&query_source=spelling_expansion_revert_click&pc=1&spelling_corrections=1&ext=mediaStats%2ChighlightedLabel failed, giving up.
In [2]:
df[0;31m---------------------------------------------------------------------------[0m [0;31mNameError[0m Traceback (most recent call last) Cell [0;32mIn[2], line 1[0m [0;32m----> 1[0m df [0;31mNameError[0m: name 'df' is not defined
In [ ]: