init
This commit is contained in:
commit
8d3c8b3974
77 changed files with 682928 additions and 0 deletions
56
ergebnisse_hackathon_repo/team-11/.ipynb_checkpoints/copscrape-checkpoint.py
Executable file
56
ergebnisse_hackathon_repo/team-11/.ipynb_checkpoints/copscrape-checkpoint.py
Executable file
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import pandas as pd
|
||||
import snscrape.modules.twitter as sntwitter
|
||||
import datetime, time
|
||||
import os
|
||||
import plotly.express as px
|
||||
|
||||
|
||||
police_handles = ['PolizeiWittlich','LKA_Bayern','Polizei_SDL','PolizeiRV','Polizei_BadN','Polizei_ZPD_NI','Polizei_KO','PolizeiMainz','polizei_nrw_ob','PP_Rheinpfalz','PolizeiTrier',\
|
||||
'PolizeiSachsen','Polizei_Ffm','Polizei_nrw_ms','Polizei_NRW_E','Polizei_NRW_AC','polizei_nrw_bi','polizei_nrw_bo','polizei_nrw_bn','polizei_nrw_bor',\
|
||||
'polizei_nrw_coe','polizei_nrw_du','polizei_nrw_dn','polizei_nrw_d','polizei_nrw_w','polizei_nrw_en','polizei_nrw_waf','polizei_nrw_wes','polizei_nrw_un',\
|
||||
'polizei_nrw_eu','polizei_nrw_vie','polizei_nrw_st','polizei_nrw_ge','polizei_nrw_gt','polizei_nrw_so','polizei_nrw_si','polizei_nrw_su','polizei_nrw_rkn',\
|
||||
'polizei_nrw_rbk','polizei_nrw_re','polizei_nrw_rek','polizei_nrw_pb','polizei_nrw_gm','polizei_nrw_oe','polizei_nrw_mi','polizei_nrw_me','polizei_nrw_mk',\
|
||||
'polizei_nrw_mg','polizei_nrw_lip','polizei_nrw_hx','polizei_nrw_kr','polizei_nrw_hsk','polizei_nrw_kle','polizei_nrw_hs','polizei_nrw_ham','polizei_nrw_hf',\
|
||||
'polizei_nrw_ha','polizeiberlin','PolizeiBerlin_E','Polizei_PS','polizei_nrw_k','PolizeiMuenchen','Polizei_MD','PolizeiHamburg','polizeiOBS','Polizei_KA',\
|
||||
'Polizei_Thuer','Polizei_NH','bpol_bw','bpol_by','Polizei_PP_NB','LKA_Hessen','PolizeiVG','Polizei_SN','Polizei_HST','PolizeiBhv','Polizei_OH','PolizeiMannheim',\
|
||||
'PP_Stuttgart','Polizei_MSE','Polizei_soh','Polizei_DeRo','Polizei_FT','Polizei_HAL','PolizeiKonstanz','bpol_b','bpol_koblenz','bpol_kueste','bpol_bepo',\
|
||||
'bpol_air_fra','bpol_nord','bpol_pir','bpol_nrw','bpol_b_einsatz','Polizei_MH','PolizeiBB','PolizeiUFR','Polizei_WH','PolizeiBayern','polizeiNB','PolizeiLB',\
|
||||
'Polizei_SuedHE','Polizei_BS','Polizei_OS','PolizeiNI_lka','polizei_nrw_do','Polizei_LG','Polizei_H','Polizei_WL','Polizei_GOE','Polizei_HI','Polizei_EL',\
|
||||
'Polizei_HM','Polizei_NBG','Polizei_LER_EMD','Polizei_AUR_WTM','Polizei_NOM','Polizei_HOL','Polizei_OHA','Polizei_STH','Pol_Grafschaft','Polizei_STD','Polizei_BBG',\
|
||||
'Polizei_Rostock','Polizei_OL','PolizeiHN','PolizeiUL','polizeiSWN','Polizei_ROW','Polizei_CE','PolizeiAalen','PolizeiOFR','PolizeiSWS','polizeiopf','PolizeiMFR',\
|
||||
'BremenPolizei','PolizeiOG','SH_Polizei','Polizei_HK','LkaBaWue','polizeiOBN','PolizeiSaarland','PolizeiRT','Polizei_WOB','PolizeiFR','Polizei_GER','PolizeiNeustadt',\
|
||||
'bpol_11','Polizei_GF','Polizei_KL','Polizei_GS','LKA_RLP','Polizei_SZ','PolizeiBB_E','Polizei_CUX','Polizei_DH','Polizei_WHV_FRI','Polizei_DEL','Polizei_CLP_VEC',\
|
||||
'Polizei_VER_OHZ','Polizei_PP_ROS']
|
||||
|
||||
limit = None
|
||||
|
||||
names = []
|
||||
usernames = []
|
||||
followers = []
|
||||
|
||||
for row in police_handles:
|
||||
twitter_user_in = sntwitter.TwitterUserScraper(row, False)
|
||||
names += [ str(twitter_user_in.entity.displayname) ]
|
||||
usernames += [ str(twitter_user_in.entity.username) ]
|
||||
followers += [ int(twitter_user_in.entity.followersCount) ]
|
||||
|
||||
# Existenzprüfung von ./cops.csv
|
||||
if os.access('./cops.csv', mode = os.O_RDONLY) is False:
|
||||
add_headers = True
|
||||
else:
|
||||
add_headers = False
|
||||
|
||||
d = {'names' : names, 'user_id': usernames, 'followers': followers, 'date': str(datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S'))}
|
||||
df = pd.DataFrame(data = d)
|
||||
#df
|
||||
df.to_csv('./cops.csv', index = False, mode = 'a+', header = add_headers)
|
||||
|
||||
df_plot = pd.read_csv('./cops.csv')
|
||||
fig = px.line(df_plot, x="date", y="followers", color="names", hover_data=['user_id'], title="Twitter: Entwicklung der Polizei-Account Follower", labels = {'names':'Pozileidirektion','user_id':'Account', 'followers': 'Follower', 'date':'Datum'})
|
||||
fig.update_traces(mode='markers+lines')
|
||||
fig.update_layout(xaxis_title = 'Datum', yaxis_title = 'Follower', xaxis_tickformat = '%Y-%m-%d %H:%M:%S', yaxis_tickformat = ',', legend_traceorder="reversed")
|
||||
fig.write_html("./index.html")
|
||||
|
||||
fig.show() # TODO: Zeitangabe nicer machen, evtl. gruppieren? nach Bundesland? nach landeskriminalamt/polizei? oder urban vs. rural oder so?
|
||||
15
ergebnisse_hackathon_repo/team-11/Pipfile
Normal file
15
ergebnisse_hackathon_repo/team-11/Pipfile
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[[source]]
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
plotly = "*"
|
||||
snscrape = {git = "https://github.com/JustAnotherArchivist/snscrape.git"}
|
||||
pandas = "*"
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[requires]
|
||||
python_version = "3.9"
|
||||
|
||||
197
ergebnisse_hackathon_repo/team-11/README.md
Normal file
197
ergebnisse_hackathon_repo/team-11/README.md
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
*Git Repository von Team 11 des Copbird Hackathon im Mai 2021*
|
||||
|
||||
### Fragestellungen
|
||||
|
||||
|
||||
Was wollen wir tun? (Frage- / Problemstellung)
|
||||
|
||||
1. Wie sieht die Entwicklung der Followeranzahl aus? Besonders interessant ist hierbei die Entwicklung im Rahmen bestimmer Events z.B. Demo's.
|
||||
2. Welche Tweets (von welcher User\*In) behandeln emotionale Thematiken (Sentiment Analyse) ?
|
||||
|
||||
Mögliche Hürden:
|
||||
|
||||
1. Analyse der Followerentwicklung nicht ohne weiteres möglich, da Twitter keine entsprechenden Information aus der Vergangenheit bereitstellt.
|
||||
Es können nur Daten ab einen bestimmten Zeitpunkt ausgewertet werden (in Form eines Python Twitter Scraper scripts, welches regelmäßig Twitter kontaktiert).
|
||||
2. Emotionale Themen auswerten birgt Fallstricke bzgl. Validität/Interpretation.
|
||||
|
||||
|
||||
|
||||
### Projekt
|
||||
|
||||
Wir schreiben ein Skript, das das nächste Jahr lang jeden Tag die Followerzahlen der deutschen Polizeiaccounts scrapen wird, auf einem Server abspeichert und auf einer Website grafisch ausgibt.
|
||||
Die Ergebnisse können dann auf einem eventuellen Copbird Hackathon 2022 ausgewertet werden <3
|
||||
|
||||
Welche Accounts wir dabei betrachten, findet ihr unten aufgelistet.
|
||||
|
||||
|
||||
### Ergebnis
|
||||
|
||||
Das Python-Skript findet ihr in diesem Repository. Es verwendet snscrape zum Scrapen der Followerzahlen der Polizeiaccounts (pip3 install git+https://github.com/JustAnotherArchivist/snscrape.git), und Plotly zur Visualisierung.
|
||||
Die Ergebnisse sind auf dieser Website visualisiert: https://deadc0de.dev/copscrap/
|
||||
|
||||
|
||||
### Liste der betrachteten Polizei-Twitter-Accounts (Twitter-Handles, Stand Mai 2021)
|
||||
|
||||
- PolizeiWittlich
|
||||
- LKA_Bayern
|
||||
- Polizei_SDL
|
||||
- PolizeiRV
|
||||
- Polizei_BadN
|
||||
- Polizei_ZPD_NI
|
||||
- Polizei_KO
|
||||
- PolizeiMainz
|
||||
- polizei_nrw_ob
|
||||
- PP_Rheinpfalz
|
||||
- PolizeiTrier
|
||||
- PolizeiSachsen
|
||||
- Polizei_Ffm
|
||||
- Polizei_nrw_ms
|
||||
- Polizei_NRW_E
|
||||
- Polizei_NRW_AC
|
||||
- polizei_nrw_bi
|
||||
- polizei_nrw_bo
|
||||
- polizei_nrw_bn
|
||||
- polizei_nrw_bor
|
||||
- polizei_nrw_coe
|
||||
- polizei_nrw_du
|
||||
- polizei_nrw_dn
|
||||
- polizei_nrw_d
|
||||
- polizei_nrw_w
|
||||
- polizei_nrw_en
|
||||
- polizei_nrw_waf
|
||||
- polizei_nrw_wes
|
||||
- polizei_nrw_un
|
||||
- polizei_nrw_eu
|
||||
- polizei_nrw_vie
|
||||
- polizei_nrw_st
|
||||
- polizei_nrw_ge
|
||||
- polizei_nrw_gt
|
||||
- polizei_nrw_so
|
||||
- polizei_nrw_si
|
||||
- polizei_nrw_su
|
||||
- polizei_nrw_rkn
|
||||
- polizei_nrw_rbk
|
||||
- polizei_nrw_re
|
||||
- polizei_nrw_rek
|
||||
- polizei_nrw_pb
|
||||
- polizei_nrw_gm
|
||||
- polizei_nrw_oe
|
||||
- polizei_nrw_mi
|
||||
- polizei_nrw_me
|
||||
- polizei_nrw_mk
|
||||
- polizei_nrw_mg
|
||||
- polizei_nrw_lip
|
||||
- polizei_nrw_hx
|
||||
- polizei_nrw_kr
|
||||
- polizei_nrw_hsk
|
||||
- polizei_nrw_kle
|
||||
- polizei_nrw_hs
|
||||
- polizei_nrw_ham
|
||||
- polizei_nrw_hf
|
||||
- polizei_nrw_ha
|
||||
- polizeiberlin
|
||||
- PolizeiBerlin_E
|
||||
- Polizei_PS
|
||||
- polizei_nrw_k
|
||||
- PolizeiMuenchen
|
||||
- Polizei_MD
|
||||
- PolizeiHamburg
|
||||
- polizeiOBS
|
||||
- Polizei_KA
|
||||
- Polizei_Thuer
|
||||
- Polizei_NH
|
||||
- bpol_bw
|
||||
- bpol_by
|
||||
- Polizei_PP_NB
|
||||
- LKA_Hessen
|
||||
- PolizeiVG
|
||||
- Polizei_SN
|
||||
- Polizei_HST
|
||||
- PolizeiBhv
|
||||
- Polizei_OH
|
||||
- PolizeiMannheim
|
||||
- PP_Stuttgart
|
||||
- Polizei_MSE
|
||||
- Polizei_soh
|
||||
- Polizei_DeRo
|
||||
- Polizei_FT
|
||||
- Polizei_HAL
|
||||
- PolizeiKonstanz
|
||||
- bpol_b
|
||||
- bpol_koblenz
|
||||
- bpol_kueste
|
||||
- bpol_bepo
|
||||
- bpol_air_fra
|
||||
- bpol_nord
|
||||
- bpol_pir
|
||||
- bpol_nrw
|
||||
- bpol_b_einsatz
|
||||
- Polizei_MH
|
||||
- PolizeiBB
|
||||
- PolizeiUFR
|
||||
- Polizei_WH
|
||||
- PolizeiBayern
|
||||
- polizeiNB
|
||||
- PolizeiLB
|
||||
- Polizei_SuedHE
|
||||
- Polizei_BS
|
||||
- Polizei_OS
|
||||
- PolizeiNI_lka
|
||||
- polizei_nrw_do
|
||||
- Polizei_LG
|
||||
- Polizei_H
|
||||
- Polizei_WL
|
||||
- Polizei_GOE
|
||||
- Polizei_HI
|
||||
- Polizei_EL
|
||||
- Polizei_HM
|
||||
- Polizei_NBG
|
||||
- Polizei_LER_EMD
|
||||
- Polizei_AUR_WTM
|
||||
- Polizei_NOM
|
||||
- Polizei_HOL
|
||||
- Polizei_OHA
|
||||
- Polizei_STH
|
||||
- Pol_Grafschaft
|
||||
- Polizei_STD
|
||||
- Polizei_BBG
|
||||
- Polizei_Rostock
|
||||
- Polizei_OL
|
||||
- PolizeiHN
|
||||
- PolizeiUL
|
||||
- polizeiSWN
|
||||
- Polizei_ROW
|
||||
- Polizei_CE
|
||||
- PolizeiAalen
|
||||
- PolizeiOFR
|
||||
- PolizeiSWS
|
||||
- polizeiopf
|
||||
- PolizeiMFR
|
||||
- BremenPolizei
|
||||
- PolizeiOG
|
||||
- SH_Polizei
|
||||
- Polizei_HK
|
||||
- LkaBaWue
|
||||
- polizeiOBN
|
||||
- PolizeiSaarland
|
||||
- PolizeiRT
|
||||
- Polizei_WOB
|
||||
- PolizeiFR
|
||||
- Polizei_GER
|
||||
- PolizeiNeustadt
|
||||
- bpol_11
|
||||
- Polizei_GF
|
||||
- Polizei_KL
|
||||
- Polizei_GS
|
||||
- LKA_RLP
|
||||
- Polizei_SZ
|
||||
- PolizeiBB_E
|
||||
- Polizei_CUX
|
||||
- Polizei_DH
|
||||
- Polizei_WHV_FRI
|
||||
- Polizei_DEL
|
||||
- Polizei_CLP_VEC
|
||||
- Polizei_VER_OHZ
|
||||
- Polizei_PP_ROS
|
||||
|
||||
|
||||
56
ergebnisse_hackathon_repo/team-11/copscrape.py
Executable file
56
ergebnisse_hackathon_repo/team-11/copscrape.py
Executable file
|
|
@ -0,0 +1,56 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import pandas as pd
|
||||
import snscrape.modules.twitter as sntwitter
|
||||
import datetime, time
|
||||
import os
|
||||
import plotly.express as px
|
||||
|
||||
|
||||
police_handles = ['PolizeiWittlich','LKA_Bayern','Polizei_SDL','PolizeiRV','Polizei_BadN','Polizei_ZPD_NI','Polizei_KO','PolizeiMainz','polizei_nrw_ob','PP_Rheinpfalz','PolizeiTrier',\
|
||||
'PolizeiSachsen','Polizei_Ffm','Polizei_nrw_ms','Polizei_NRW_E','Polizei_NRW_AC','polizei_nrw_bi','polizei_nrw_bo','polizei_nrw_bn','polizei_nrw_bor',\
|
||||
'polizei_nrw_coe','polizei_nrw_du','polizei_nrw_dn','polizei_nrw_d','polizei_nrw_w','polizei_nrw_en','polizei_nrw_waf','polizei_nrw_wes','polizei_nrw_un',\
|
||||
'polizei_nrw_eu','polizei_nrw_vie','polizei_nrw_st','polizei_nrw_ge','polizei_nrw_gt','polizei_nrw_so','polizei_nrw_si','polizei_nrw_su','polizei_nrw_rkn',\
|
||||
'polizei_nrw_rbk','polizei_nrw_re','polizei_nrw_rek','polizei_nrw_pb','polizei_nrw_gm','polizei_nrw_oe','polizei_nrw_mi','polizei_nrw_me','polizei_nrw_mk',\
|
||||
'polizei_nrw_mg','polizei_nrw_lip','polizei_nrw_hx','polizei_nrw_kr','polizei_nrw_hsk','polizei_nrw_kle','polizei_nrw_hs','polizei_nrw_ham','polizei_nrw_hf',\
|
||||
'polizei_nrw_ha','polizeiberlin','PolizeiBerlin_E','Polizei_PS','polizei_nrw_k','PolizeiMuenchen','Polizei_MD','PolizeiHamburg','polizeiOBS','Polizei_KA',\
|
||||
'Polizei_Thuer','Polizei_NH','bpol_bw','bpol_by','Polizei_PP_NB','LKA_Hessen','PolizeiVG','Polizei_SN','Polizei_HST','PolizeiBhv','Polizei_OH','PolizeiMannheim',\
|
||||
'PP_Stuttgart','Polizei_MSE','Polizei_soh','Polizei_DeRo','Polizei_FT','Polizei_HAL','PolizeiKonstanz','bpol_b','bpol_koblenz','bpol_kueste','bpol_bepo',\
|
||||
'bpol_air_fra','bpol_nord','bpol_pir','bpol_nrw','bpol_b_einsatz','Polizei_MH','PolizeiBB','PolizeiUFR','Polizei_WH','PolizeiBayern','polizeiNB','PolizeiLB',\
|
||||
'Polizei_SuedHE','Polizei_BS','Polizei_OS','PolizeiNI_lka','polizei_nrw_do','Polizei_LG','Polizei_H','Polizei_WL','Polizei_GOE','Polizei_HI','Polizei_EL',\
|
||||
'Polizei_HM','Polizei_NBG','Polizei_LER_EMD','Polizei_AUR_WTM','Polizei_NOM','Polizei_HOL','Polizei_OHA','Polizei_STH','Pol_Grafschaft','Polizei_STD','Polizei_BBG',\
|
||||
'Polizei_Rostock','Polizei_OL','PolizeiHN','PolizeiUL','polizeiSWN','Polizei_ROW','Polizei_CE','PolizeiAalen','PolizeiOFR','PolizeiSWS','polizeiopf','PolizeiMFR',\
|
||||
'BremenPolizei','PolizeiOG','SH_Polizei','Polizei_HK','LkaBaWue','polizeiOBN','PolizeiSaarland','PolizeiRT','Polizei_WOB','PolizeiFR','Polizei_GER','PolizeiNeustadt',\
|
||||
'bpol_11','Polizei_GF','Polizei_KL','Polizei_GS','LKA_RLP','Polizei_SZ','PolizeiBB_E','Polizei_CUX','Polizei_DH','Polizei_WHV_FRI','Polizei_DEL','Polizei_CLP_VEC',\
|
||||
'Polizei_VER_OHZ','Polizei_PP_ROS']
|
||||
|
||||
limit = None
|
||||
|
||||
names = []
|
||||
usernames = []
|
||||
followers = []
|
||||
|
||||
for row in police_handles:
|
||||
twitter_user_in = sntwitter.TwitterUserScraper(row, False)
|
||||
names += [ str(twitter_user_in.entity.displayname) ]
|
||||
usernames += [ str(twitter_user_in.entity.username) ]
|
||||
followers += [ int(twitter_user_in.entity.followersCount) ]
|
||||
|
||||
# Existenzprüfung von ./cops.csv
|
||||
if os.access('./cops.csv', mode = os.O_RDONLY) is False:
|
||||
add_headers = True
|
||||
else:
|
||||
add_headers = False
|
||||
|
||||
d = {'names' : names, 'user_id': usernames, 'followers': followers, 'date': str(datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d %H:%M:%S'))}
|
||||
df = pd.DataFrame(data = d)
|
||||
#df
|
||||
df.to_csv('./cops.csv', index = False, mode = 'a+', header = add_headers)
|
||||
|
||||
df_plot = pd.read_csv('./cops.csv')
|
||||
fig = px.line(df_plot, x="date", y="followers", color="names", hover_data=['user_id'], title="Twitter: Entwicklung der Polizei-Account Follower", labels = {'names':'Pozileidirektion','user_id':'Account', 'followers': 'Follower', 'date':'Datum'})
|
||||
fig.update_traces(mode='markers+lines')
|
||||
fig.update_layout(xaxis_title = 'Datum', yaxis_title = 'Follower', xaxis_tickformat = '%Y-%m-%d %H:%M:%S', yaxis_tickformat = ',', legend_traceorder="reversed")
|
||||
fig.write_html("./index.html")
|
||||
|
||||
fig.show() # TODO: Zeitangabe nicer machen, evtl. gruppieren? nach Bundesland? nach landeskriminalamt/polizei? oder urban vs. rural oder so?
|
||||
Loading…
Add table
Add a link
Reference in a new issue