updated code and ran tests

This commit is contained in:
simplypower-bbj
2023-01-09 18:51:53 +01:00
parent 4cd14cd6a2
commit ec60648ad9
2 changed files with 40 additions and 18 deletions
+12 -6
View File
@@ -26,15 +26,21 @@
"source": [ "source": [
"import snscrape.modules.twitter as sntwitter\n", "import snscrape.modules.twitter as sntwitter\n",
"import pandas as pd\n", "import pandas as pd\n",
"tweet_list = list()\n", "\n",
"# prepare variables\n",
"query = '(Odense OR odense OR #odense OR #Odense) until:2022-12-17 since:2017-01-01 -filter:replies'\n", "query = '(Odense OR odense OR #odense OR #Odense) until:2022-12-17 since:2017-01-01 -filter:replies'\n",
"limit = 1000\n", "limit = 1000\n",
"\n", "tweet_list = list()\n",
"query = '(Odense OR odense OR #odense OR #Odense) until:2022-12-17 since:2017-01-01 -filter:replies'\n",
"# begin scraping\n",
"for i, tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()):\n", "for i, tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()):\n",
" if i % 100 == 0: print(f'found {i} tweets')\n", " # if limit is reached, break out of loop\n",
" if i > limit: break\n", " if limit > 0 and i > limit: break\n",
" # if another 100 tweets found, tell it\n",
" if i % 100 == 0: \n",
" print(f'found {i} tweets')\n",
" tweet_list.append([tweet.date, tweet.id, tweet.content, tweet.user.username])\n", " tweet_list.append([tweet.date, tweet.id, tweet.content, tweet.user.username])\n",
"\n", "# create dataframe\n",
"df = pd.DataFrame(tweet_list, columns=['Datetime', 'Id', 'Text', 'Username'])" "df = pd.DataFrame(tweet_list, columns=['Datetime', 'Id', 'Text', 'Username'])"
] ]
}, },
@@ -216,7 +222,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.10.6" "version": "3.10.6 (main, Aug 11 2022, 13:49:25) [Clang 13.1.6 (clang-1316.0.21.2.5)]"
}, },
"orig_nbformat": 4, "orig_nbformat": 4,
"vscode": { "vscode": {
+28 -12
View File
@@ -1,18 +1,34 @@
# public packages
import snscrape.modules.twitter as sntwitter import snscrape.modules.twitter as sntwitter
import pandas as pd import pandas as pd
# database-related
from database import insert_list
from dotenv import load_dotenv
def scrape(limit=0): def scrape():
# prepare variables # prepare lists to hold information
tweet_list = list() username_list = list()
query = '(Odense OR odense OR #odense OR #Odense) until:2022-12-17 since:2017-01-01 -filter:replies' timestamp_list = list()
content_list = list()
# begin scraping # begin scraping
query = '(Odense OR odense OR #odense OR #Odense) until:2022-12-17 since:2017-01-01 -filter:replies'
for i, tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()): for i, tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()):
# if limit is reached, break out of loop # store information in lists
if limit > 0 and i > limit: break username_list.append(tweet.user.username)
# if another 100 tweets found, tell it timestamp_list.append(tweet.date)
if i % 100 == 0: content_list.append(tweet.content)
# when 100 tweets have been collected
if len(content_list) == 100:
# send data to database
insert_list(username_list, timestamp_list, content_list)
# empty lists
username_list = list()
timestamp_list = list()
content_list = list()
# check in on progress
if i % 100 == 0:
print(f'found {i} tweets') print(f'found {i} tweets')
tweet_list.append([tweet.date, tweet.id, tweet.content, tweet.user.username])
# create dataframe if __name__ == '__main__':
df = pd.DataFrame(tweet_list, columns=['Datetime', 'Id', 'Text', 'Username']) load_dotenv()
return df scrape()