diff --git a/.gitignore b/.gitignore index 6509fc7..769d945 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ de/csv +chromedriver # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/README.md b/README.md index 7542acd..10008e1 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -# UU_NCML_Project \ No newline at end of file +# UU_NCML_Project + +## Selenium + + +Install a google chrome, download the corresponding Webdriver and place it into this folder (filename: `chromedriver`): +https://www.selenium.dev/documentation/en/webdriver/driver_requirements/ \ No newline at end of file diff --git a/convert_to_csv_de.py b/convert_to_csv_de.py index da894af..f8339f8 100644 --- a/convert_to_csv_de.py +++ b/convert_to_csv_de.py @@ -1,15 +1,29 @@ import pandas as pd import os -# Convert data to csv base_dir = "./de/" +out_dir = "csv/" +in_dir = "input/" +title_file = "filename_to_titles.csv" -out_dir = "csv" -if not os.path.exists(base_dir + out_dir): - os.makedirs(base_dir + out_dir) -for dirname, _, filenames in os.walk(base_dir + 'input'): +if not os.path.exists(os.path.join(base_dir, out_dir)): + os.makedirs(os.path.join(base_dir, out_dir)) + +# Copy titles file and replace file endings +print(f'Copying Title File') +with open(os.path.join(base_dir, in_dir, title_file), 'r') as file: + file_content = file.read() + file_content = file_content.replace('.xlsx', '.csv') +with open(os.path.join(base_dir, out_dir, title_file), 'w') as file: + file.write(file_content) + +# Convert xlsx files to csv +for dirname, _, filenames in os.walk(os.path.join(base_dir, in_dir)): for filename in filenames: - read_file = pd.read_excel (os.path.join(dirname, filename)) - read_file.to_csv (os.path.join(base_dir + out_dir, filename.split(".", 1)[0] + ".csv"), index = None, header=True) + if filename != title_file: + print(f'Reading {filename}') + read_file = pd.read_excel (os.path.join(dirname, filename)) + print(f'Saving {filename}') + read_file.to_csv (os.path.join(base_dir, out_dir, filename.split(".", 1)[0] + ".csv"), index = None, header=True) diff --git a/de/input/20190926_1_xls-data.xlsx b/de/input/20190926_1_xls-data.xlsx new file mode 100644 index 0000000..07760bc Binary files /dev/null and b/de/input/20190926_1_xls-data.xlsx differ diff --git a/de/input/20190926_3_xls-data.xlsx b/de/input/20190926_3_xls-data.xlsx new file mode 100644 index 0000000..45bba17 Binary files /dev/null and b/de/input/20190926_3_xls-data.xlsx differ diff --git a/de/input/20190926_4_xls-data.xlsx b/de/input/20190926_4_xls-data.xlsx new file mode 100644 index 0000000..e478a8d Binary files /dev/null and b/de/input/20190926_4_xls-data.xlsx differ diff --git a/de/input/20190926_5_xls-data.xlsx b/de/input/20190926_5_xls-data.xlsx new file mode 100644 index 0000000..7210f0e Binary files /dev/null and b/de/input/20190926_5_xls-data.xlsx differ diff --git a/de/input/20190926_6_xls-data.xlsx b/de/input/20190926_6_xls-data.xlsx new file mode 100644 index 0000000..0bb1619 Binary files /dev/null and b/de/input/20190926_6_xls-data.xlsx differ diff --git a/de/input/20190926_7_xls-data.xlsx b/de/input/20190926_7_xls-data.xlsx new file mode 100644 index 0000000..b6c3410 Binary files /dev/null and b/de/input/20190926_7_xls-data.xlsx differ diff --git a/de/input/20191017_1_xls-data.xlsx b/de/input/20191017_1_xls-data.xlsx new file mode 100644 index 0000000..f419b4e Binary files /dev/null and b/de/input/20191017_1_xls-data.xlsx differ diff --git a/de/input/20191017_2_xls-data.xlsx b/de/input/20191017_2_xls-data.xlsx new file mode 100644 index 0000000..9440777 Binary files /dev/null and b/de/input/20191017_2_xls-data.xlsx differ diff --git a/de/input/20191018_1_xls-data.xlsx b/de/input/20191018_1_xls-data.xlsx new file mode 100644 index 0000000..6c6ca78 Binary files /dev/null and b/de/input/20191018_1_xls-data.xlsx differ diff --git a/de/input/20191018_2_xls-data.xlsx b/de/input/20191018_2_xls-data.xlsx new file mode 100644 index 0000000..20c3a30 Binary files /dev/null and b/de/input/20191018_2_xls-data.xlsx differ diff --git a/de/input/20191024_1_xls-data.xlsx b/de/input/20191024_1_xls-data.xlsx new file mode 100644 index 0000000..27b976c Binary files /dev/null and b/de/input/20191024_1_xls-data.xlsx differ diff --git a/de/input/20191024_2_xls-data.xlsx b/de/input/20191024_2_xls-data.xlsx new file mode 100644 index 0000000..dee4a16 Binary files /dev/null and b/de/input/20191024_2_xls-data.xlsx differ diff --git a/de/input/20191024_3_xls-data.xlsx b/de/input/20191024_3_xls-data.xlsx new file mode 100644 index 0000000..ae17a80 Binary files /dev/null and b/de/input/20191024_3_xls-data.xlsx differ diff --git a/de/input/20191107_1_xls-data.xlsx b/de/input/20191107_1_xls-data.xlsx new file mode 100644 index 0000000..28797a9 Binary files /dev/null and b/de/input/20191107_1_xls-data.xlsx differ diff --git a/de/input/20191107_2_xls-data.xlsx b/de/input/20191107_2_xls-data.xlsx new file mode 100644 index 0000000..e73118f Binary files /dev/null and b/de/input/20191107_2_xls-data.xlsx differ diff --git a/de/input/20191113_1_xls-data.xlsx b/de/input/20191113_1_xls-data.xlsx new file mode 100644 index 0000000..f8e424c Binary files /dev/null and b/de/input/20191113_1_xls-data.xlsx differ diff --git a/de/input/20191113_2_xls-data.xlsx b/de/input/20191113_2_xls-data.xlsx new file mode 100644 index 0000000..79ba632 Binary files /dev/null and b/de/input/20191113_2_xls-data.xlsx differ diff --git a/de/input/20191114_1_xls-data.xlsx b/de/input/20191114_1_xls-data.xlsx new file mode 100644 index 0000000..1ba480b Binary files /dev/null and b/de/input/20191114_1_xls-data.xlsx differ diff --git a/de/input/20191114_2_xls-data.xlsx b/de/input/20191114_2_xls-data.xlsx new file mode 100644 index 0000000..a46b09e Binary files /dev/null and b/de/input/20191114_2_xls-data.xlsx differ diff --git a/de/input/20191114_3_xls-data.xlsx b/de/input/20191114_3_xls-data.xlsx new file mode 100644 index 0000000..e9356e3 Binary files /dev/null and b/de/input/20191114_3_xls-data.xlsx differ diff --git a/de/input/20191114_4_xls-data.xlsx b/de/input/20191114_4_xls-data.xlsx new file mode 100644 index 0000000..f2096fc Binary files /dev/null and b/de/input/20191114_4_xls-data.xlsx differ diff --git a/de/input/20191114_5_xls-data.xlsx b/de/input/20191114_5_xls-data.xlsx new file mode 100644 index 0000000..c0bf048 Binary files /dev/null and b/de/input/20191114_5_xls-data.xlsx differ diff --git a/de/input/20191114_6_xls-data.xlsx b/de/input/20191114_6_xls-data.xlsx new file mode 100644 index 0000000..121a623 Binary files /dev/null and b/de/input/20191114_6_xls-data.xlsx differ diff --git a/de/input/20191114_7_xls-data.xlsx b/de/input/20191114_7_xls-data.xlsx new file mode 100644 index 0000000..9940819 Binary files /dev/null and b/de/input/20191114_7_xls-data.xlsx differ diff --git a/de/input/20191115_1_xls-data.xlsx b/de/input/20191115_1_xls-data.xlsx new file mode 100644 index 0000000..efda607 Binary files /dev/null and b/de/input/20191115_1_xls-data.xlsx differ diff --git a/de/input/20191126_1_xls-data.xlsx b/de/input/20191126_1_xls-data.xlsx new file mode 100644 index 0000000..17292db Binary files /dev/null and b/de/input/20191126_1_xls-data.xlsx differ diff --git a/de/input/20191127_1_xls-data.xlsx b/de/input/20191127_1_xls-data.xlsx new file mode 100644 index 0000000..aed1273 Binary files /dev/null and b/de/input/20191127_1_xls-data.xlsx differ diff --git a/de/input/20191129_1_xls-data.xlsx b/de/input/20191129_1_xls-data.xlsx new file mode 100644 index 0000000..4faeca3 Binary files /dev/null and b/de/input/20191129_1_xls-data.xlsx differ diff --git a/de/input/20191129_2_xls-data.xlsx b/de/input/20191129_2_xls-data.xlsx new file mode 100644 index 0000000..614e5f1 Binary files /dev/null and b/de/input/20191129_2_xls-data.xlsx differ diff --git a/de/input/20191129_3_xls-data.xlsx b/de/input/20191129_3_xls-data.xlsx new file mode 100644 index 0000000..0ca2341 Binary files /dev/null and b/de/input/20191129_3_xls-data.xlsx differ diff --git a/de/input/20191219_1_xls-data.xlsx b/de/input/20191219_1_xls-data.xlsx new file mode 100644 index 0000000..da7188f Binary files /dev/null and b/de/input/20191219_1_xls-data.xlsx differ diff --git a/de/input/20191219_2_xls-data.xlsx b/de/input/20191219_2_xls-data.xlsx new file mode 100644 index 0000000..721ecdf Binary files /dev/null and b/de/input/20191219_2_xls-data.xlsx differ diff --git a/de/input/20191219_3_xls-data.xlsx b/de/input/20191219_3_xls-data.xlsx new file mode 100644 index 0000000..007ab24 Binary files /dev/null and b/de/input/20191219_3_xls-data.xlsx differ diff --git a/de/input/20191219_4_xls-data.xlsx b/de/input/20191219_4_xls-data.xlsx new file mode 100644 index 0000000..6c80fce Binary files /dev/null and b/de/input/20191219_4_xls-data.xlsx differ diff --git a/de/input/20191219_5_xls-data.xlsx b/de/input/20191219_5_xls-data.xlsx new file mode 100644 index 0000000..e617bed Binary files /dev/null and b/de/input/20191219_5_xls-data.xlsx differ diff --git a/de/input/20191219_6_xls-data.xlsx b/de/input/20191219_6_xls-data.xlsx new file mode 100644 index 0000000..339b304 Binary files /dev/null and b/de/input/20191219_6_xls-data.xlsx differ diff --git a/de/input/20191220_1_xls-data.xlsx b/de/input/20191220_1_xls-data.xlsx new file mode 100644 index 0000000..acbd2c7 Binary files /dev/null and b/de/input/20191220_1_xls-data.xlsx differ diff --git a/de/input/20191220_2_xls-data.xlsx b/de/input/20191220_2_xls-data.xlsx new file mode 100644 index 0000000..c8df1c9 Binary files /dev/null and b/de/input/20191220_2_xls-data.xlsx differ diff --git a/de/input/20200115_xls-data.xlsx b/de/input/20200115_xls-data.xlsx new file mode 100644 index 0000000..98f584c Binary files /dev/null and b/de/input/20200115_xls-data.xlsx differ diff --git a/de/input/20200116_1_xls-data.xlsx b/de/input/20200116_1_xls-data.xlsx new file mode 100644 index 0000000..fe5e4a0 Binary files /dev/null and b/de/input/20200116_1_xls-data.xlsx differ diff --git a/de/input/20200116_2_xls-data.xlsx b/de/input/20200116_2_xls-data.xlsx new file mode 100644 index 0000000..f8d351f Binary files /dev/null and b/de/input/20200116_2_xls-data.xlsx differ diff --git a/de/input/20200116_3_xls-data.xlsx b/de/input/20200116_3_xls-data.xlsx new file mode 100644 index 0000000..6525a43 Binary files /dev/null and b/de/input/20200116_3_xls-data.xlsx differ diff --git a/de/input/20200117_1_xls-data.xlsx b/de/input/20200117_1_xls-data.xlsx new file mode 100644 index 0000000..dd4ef18 Binary files /dev/null and b/de/input/20200117_1_xls-data.xlsx differ diff --git a/de/input/20200130_1_xls-data.xlsx b/de/input/20200130_1_xls-data.xlsx new file mode 100644 index 0000000..76f6d33 Binary files /dev/null and b/de/input/20200130_1_xls-data.xlsx differ diff --git a/de/input/20200130_2_xls-data.xlsx b/de/input/20200130_2_xls-data.xlsx new file mode 100644 index 0000000..5a6fd81 Binary files /dev/null and b/de/input/20200130_2_xls-data.xlsx differ diff --git a/de/input/20200130_3_xls-data.xlsx b/de/input/20200130_3_xls-data.xlsx new file mode 100644 index 0000000..5b27be1 Binary files /dev/null and b/de/input/20200130_3_xls-data.xlsx differ diff --git a/de/input/20200304_1_xls-data.xlsx b/de/input/20200304_1_xls-data.xlsx new file mode 100644 index 0000000..46939f9 Binary files /dev/null and b/de/input/20200304_1_xls-data.xlsx differ diff --git a/de/input/20200313_1_xls-data.xlsx b/de/input/20200313_1_xls-data.xlsx new file mode 100644 index 0000000..c68ab70 Binary files /dev/null and b/de/input/20200313_1_xls-data.xlsx differ diff --git a/de/input/20200313_2_xls-data.xlsx b/de/input/20200313_2_xls-data.xlsx new file mode 100644 index 0000000..625c733 Binary files /dev/null and b/de/input/20200313_2_xls-data.xlsx differ diff --git a/de/input/20200325_1_xls-data.xlsx b/de/input/20200325_1_xls-data.xlsx new file mode 100644 index 0000000..8d3b5c3 Binary files /dev/null and b/de/input/20200325_1_xls-data.xlsx differ diff --git a/de/input/20200507_1_xls-data.xlsx b/de/input/20200507_1_xls-data.xlsx new file mode 100644 index 0000000..ce4f1cc Binary files /dev/null and b/de/input/20200507_1_xls-data.xlsx differ diff --git a/de/input/20200514_1_xls-data.xlsx b/de/input/20200514_1_xls-data.xlsx new file mode 100644 index 0000000..8328397 Binary files /dev/null and b/de/input/20200514_1_xls-data.xlsx differ diff --git a/de/input/20200514_2_xls-data.xlsx b/de/input/20200514_2_xls-data.xlsx new file mode 100644 index 0000000..24eb2c6 Binary files /dev/null and b/de/input/20200514_2_xls-data.xlsx differ diff --git a/de/input/20200514_3_xls-data.xlsx b/de/input/20200514_3_xls-data.xlsx new file mode 100644 index 0000000..0773b0f Binary files /dev/null and b/de/input/20200514_3_xls-data.xlsx differ diff --git a/de/input/20200514_4_xls-data.xlsx b/de/input/20200514_4_xls-data.xlsx new file mode 100644 index 0000000..12f3510 Binary files /dev/null and b/de/input/20200514_4_xls-data.xlsx differ diff --git a/de/input/20200527_1_xls-data.xlsx b/de/input/20200527_1_xls-data.xlsx new file mode 100644 index 0000000..5481fae Binary files /dev/null and b/de/input/20200527_1_xls-data.xlsx differ diff --git a/de/input/20200529_1_xls-data.xlsx b/de/input/20200529_1_xls-data.xlsx new file mode 100644 index 0000000..f42adb5 Binary files /dev/null and b/de/input/20200529_1_xls-data.xlsx differ diff --git a/de/input/20200529_2_xls-data.xlsx b/de/input/20200529_2_xls-data.xlsx new file mode 100644 index 0000000..958971c Binary files /dev/null and b/de/input/20200529_2_xls-data.xlsx differ diff --git a/de/input/20200617_1_xls-data.xlsx b/de/input/20200617_1_xls-data.xlsx new file mode 100644 index 0000000..f855dd9 Binary files /dev/null and b/de/input/20200617_1_xls-data.xlsx differ diff --git a/de/input/20200617_2_xls-data.xlsx b/de/input/20200617_2_xls-data.xlsx new file mode 100644 index 0000000..9f75051 Binary files /dev/null and b/de/input/20200617_2_xls-data.xlsx differ diff --git a/de/input/20200618_2_xls-data.xlsx b/de/input/20200618_2_xls-data.xlsx new file mode 100644 index 0000000..879a204 Binary files /dev/null and b/de/input/20200618_2_xls-data.xlsx differ diff --git a/de/input/20200619_1_xls-data.xlsx b/de/input/20200619_1_xls-data.xlsx new file mode 100644 index 0000000..cf2e30e Binary files /dev/null and b/de/input/20200619_1_xls-data.xlsx differ diff --git a/de/input/20200702_1_xls-data.xlsx b/de/input/20200702_1_xls-data.xlsx new file mode 100644 index 0000000..399bad5 Binary files /dev/null and b/de/input/20200702_1_xls-data.xlsx differ diff --git a/de/input/20200702_2_xls-data.xlsx b/de/input/20200702_2_xls-data.xlsx new file mode 100644 index 0000000..498eb17 Binary files /dev/null and b/de/input/20200702_2_xls-data.xlsx differ diff --git a/de/input/20200703_1_xls-data.xlsx b/de/input/20200703_1_xls-data.xlsx new file mode 100644 index 0000000..93e38e7 Binary files /dev/null and b/de/input/20200703_1_xls-data.xlsx differ diff --git a/de/input/20200703_2_xls-data.xlsx b/de/input/20200703_2_xls-data.xlsx new file mode 100644 index 0000000..b57c6d2 Binary files /dev/null and b/de/input/20200703_2_xls-data.xlsx differ diff --git a/de/input/20200910_2_xls-data.xlsx b/de/input/20200910_2_xls-data.xlsx new file mode 100644 index 0000000..bff3334 Binary files /dev/null and b/de/input/20200910_2_xls-data.xlsx differ diff --git a/de/input/20200916_1_xls-data.xlsx b/de/input/20200916_1_xls-data.xlsx new file mode 100644 index 0000000..f60c6a2 Binary files /dev/null and b/de/input/20200916_1_xls-data.xlsx differ diff --git a/de/input/20200917_1_xls-data.xlsx b/de/input/20200917_1_xls-data.xlsx new file mode 100644 index 0000000..fc8259d Binary files /dev/null and b/de/input/20200917_1_xls-data.xlsx differ diff --git a/de/input/20200918_1_xls-data.xlsx b/de/input/20200918_1_xls-data.xlsx new file mode 100644 index 0000000..f7c95ee Binary files /dev/null and b/de/input/20200918_1_xls-data.xlsx differ diff --git a/de/input/20200918_2_xls-data.xlsx b/de/input/20200918_2_xls-data.xlsx new file mode 100644 index 0000000..92fea4a Binary files /dev/null and b/de/input/20200918_2_xls-data.xlsx differ diff --git a/de/input/20201008_1_xls-data.xlsx b/de/input/20201008_1_xls-data.xlsx new file mode 100644 index 0000000..873c8de Binary files /dev/null and b/de/input/20201008_1_xls-data.xlsx differ diff --git a/de/input/20201009_1_xls-data.xlsx b/de/input/20201009_1_xls-data.xlsx new file mode 100644 index 0000000..8badb6c Binary files /dev/null and b/de/input/20201009_1_xls-data.xlsx differ diff --git a/de/input/20201009_2_xls-data.xlsx b/de/input/20201009_2_xls-data.xlsx new file mode 100644 index 0000000..61865c4 Binary files /dev/null and b/de/input/20201009_2_xls-data.xlsx differ diff --git a/de/input/20201009_3_xls-data.xlsx b/de/input/20201009_3_xls-data.xlsx new file mode 100644 index 0000000..d99548c Binary files /dev/null and b/de/input/20201009_3_xls-data.xlsx differ diff --git a/de/input/20201029_2_xls-data.xlsx b/de/input/20201029_2_xls-data.xlsx new file mode 100644 index 0000000..d95d17a Binary files /dev/null and b/de/input/20201029_2_xls-data.xlsx differ diff --git a/de/input/20201030_1_xls-data.xlsx b/de/input/20201030_1_xls-data.xlsx new file mode 100644 index 0000000..8df09a5 Binary files /dev/null and b/de/input/20201030_1_xls-data.xlsx differ diff --git a/de/input/20201030_2_xls-data.xlsx b/de/input/20201030_2_xls-data.xlsx new file mode 100644 index 0000000..ba3dd0e Binary files /dev/null and b/de/input/20201030_2_xls-data.xlsx differ diff --git a/de/input/20201118_1_xls-data.xlsx b/de/input/20201118_1_xls-data.xlsx new file mode 100644 index 0000000..c9e2815 Binary files /dev/null and b/de/input/20201118_1_xls-data.xlsx differ diff --git a/de/input/20201118_2_xls-data.xlsx b/de/input/20201118_2_xls-data.xlsx new file mode 100644 index 0000000..50e8e81 Binary files /dev/null and b/de/input/20201118_2_xls-data.xlsx differ diff --git a/de/input/20201118_3_xls-data.xlsx b/de/input/20201118_3_xls-data.xlsx new file mode 100644 index 0000000..b781105 Binary files /dev/null and b/de/input/20201118_3_xls-data.xlsx differ diff --git a/de/input/20201118_4_xls-data.xlsx b/de/input/20201118_4_xls-data.xlsx new file mode 100644 index 0000000..bc5c31d Binary files /dev/null and b/de/input/20201118_4_xls-data.xlsx differ diff --git a/de/input/20201119_1_xls-data.xlsx b/de/input/20201119_1_xls-data.xlsx new file mode 100644 index 0000000..20904b6 Binary files /dev/null and b/de/input/20201119_1_xls-data.xlsx differ diff --git a/de/input/20201126_2_xls-data.xlsx b/de/input/20201126_2_xls-data.xlsx new file mode 100644 index 0000000..9383502 Binary files /dev/null and b/de/input/20201126_2_xls-data.xlsx differ diff --git a/de/input/20201126_3_xls-data.xlsx b/de/input/20201126_3_xls-data.xlsx new file mode 100644 index 0000000..9f810d2 Binary files /dev/null and b/de/input/20201126_3_xls-data.xlsx differ diff --git a/de/input/20201208_1_xls-data.xlsx b/de/input/20201208_1_xls-data.xlsx new file mode 100644 index 0000000..90cdd85 Binary files /dev/null and b/de/input/20201208_1_xls-data.xlsx differ diff --git a/de/input/20201208_2_xls-data.xlsx b/de/input/20201208_2_xls-data.xlsx new file mode 100644 index 0000000..081e678 Binary files /dev/null and b/de/input/20201208_2_xls-data.xlsx differ diff --git a/de/input/20201209_1_xls-data.xlsx b/de/input/20201209_1_xls-data.xlsx new file mode 100644 index 0000000..1ea8e2f Binary files /dev/null and b/de/input/20201209_1_xls-data.xlsx differ diff --git a/de/input/20201211_1_xls-data.xlsx b/de/input/20201211_1_xls-data.xlsx new file mode 100644 index 0000000..3a848cc Binary files /dev/null and b/de/input/20201211_1_xls-data.xlsx differ diff --git a/de/input/20201216_1_xls-data.xlsx b/de/input/20201216_1_xls-data.xlsx new file mode 100644 index 0000000..14ddfd3 Binary files /dev/null and b/de/input/20201216_1_xls-data.xlsx differ diff --git a/de/input/20201217_1_xls-data.xlsx b/de/input/20201217_1_xls-data.xlsx new file mode 100644 index 0000000..b383b3e Binary files /dev/null and b/de/input/20201217_1_xls-data.xlsx differ diff --git a/de/input/20210114_1_xls-data.xlsx b/de/input/20210114_1_xls-data.xlsx new file mode 100644 index 0000000..7446afb Binary files /dev/null and b/de/input/20210114_1_xls-data.xlsx differ diff --git a/de/input/20210128_1_xls-data.xlsx b/de/input/20210128_1_xls-data.xlsx new file mode 100644 index 0000000..c6b7e7c Binary files /dev/null and b/de/input/20210128_1_xls-data.xlsx differ diff --git a/de/input/20210129_1_xls-data.xlsx b/de/input/20210129_1_xls-data.xlsx new file mode 100644 index 0000000..48c6660 Binary files /dev/null and b/de/input/20210129_1_xls-data.xlsx differ diff --git a/de/input/20210225_2_xls-data.xlsx b/de/input/20210225_2_xls-data.xlsx new file mode 100644 index 0000000..48e7190 Binary files /dev/null and b/de/input/20210225_2_xls-data.xlsx differ diff --git a/de/input/20210303_1_xls-data.xlsx b/de/input/20210303_1_xls-data.xlsx new file mode 100644 index 0000000..85d11ea Binary files /dev/null and b/de/input/20210303_1_xls-data.xlsx differ diff --git a/de/input/20210303_2_xls-data.xlsx b/de/input/20210303_2_xls-data.xlsx new file mode 100644 index 0000000..42ecc2c Binary files /dev/null and b/de/input/20210303_2_xls-data.xlsx differ diff --git a/de/input/20210304_1_xls-data.xlsx b/de/input/20210304_1_xls-data.xlsx new file mode 100644 index 0000000..c1e4369 Binary files /dev/null and b/de/input/20210304_1_xls-data.xlsx differ diff --git a/de/input/20210325_1_xls-data.xlsx b/de/input/20210325_1_xls-data.xlsx new file mode 100644 index 0000000..d732e6f Binary files /dev/null and b/de/input/20210325_1_xls-data.xlsx differ diff --git a/de/input/20210325_2_xls-data.xlsx b/de/input/20210325_2_xls-data.xlsx new file mode 100644 index 0000000..3c1c7d1 Binary files /dev/null and b/de/input/20210325_2_xls-data.xlsx differ diff --git a/de/input/20210325_3_Military_in_Afghanistan.xlsx b/de/input/20210325_3_xls-data.xlsx similarity index 100% rename from de/input/20210325_3_Military_in_Afghanistan.xlsx rename to de/input/20210325_3_xls-data.xlsx diff --git a/de/input/20210326_1_Transparency_rules_for_Members_of_Parliament.xlsx b/de/input/20210326_1_xls-data.xlsx similarity index 100% rename from de/input/20210326_1_Transparency_rules_for_Members_of_Parliament.xlsx rename to de/input/20210326_1_xls-data.xlsx diff --git a/de/input/20210414_1_Engergy_Distribution_in_Germany.xlsx b/de/input/20210414_1_xls-data.xlsx similarity index 100% rename from de/input/20210414_1_Engergy_Distribution_in_Germany.xlsx rename to de/input/20210414_1_xls-data.xlsx diff --git a/de/input/filename_to_titles.csv b/de/input/filename_to_titles.csv new file mode 100644 index 0000000..ac8b026 --- /dev/null +++ b/de/input/filename_to_titles.csv @@ -0,0 +1,103 @@ +20210414_1_xls-data.xlsx;14.04.2021: Energieversorgung in Deutschland +20210326_1_xls-data.xlsx;25.03.2021: Transparenzregelung für Abgeordnete +20210325_3_xls-data.xlsx;25.03.2021: Bundeswehreinsatz in Afghanistan +20210325_2_xls-data.xlsx;25.03.2021: BND-Gesetz, Kontrolle der Nachrichtendienste +20210325_1_xls-data.xlsx;25.03.2021: Eigenmittelsystem der EU +20210304_1_xls-data.xlsx;04.03.2021: Epidemische Lage von nationaler Tragweite +20210303_2_xls-data.xlsx;03.03.2021: Bundeswehreinsatz im Mittelmeer (SEA GUARDIAN) - Beschlussempfehlung +20210303_1_xls-data.xlsx;03.03.2021: Bundeswehreinsatz in Südsudan (UNMISS) - Beschlussempfehlung +20210225_2_xls-data.xlsx;25.02.2021: Verein Indymedia verbieten (Beschlussempfehlung) +20210129_1_xls-data.xlsx;29.01.2021:Antrag zu Normenkontrolle Drittes Bevölkerungsschutzgesetz +20210128_1_xls-data.xlsx;28.01.2021: Covid-19-Wahlbewerberaufstellungsverordnung (Beschlussempfehlung) +20210114_1_xls-data.xlsx;14.01.2021: Antrag zu Feststellung gemäß § 52 Absatz 4 Satz 1 des Bundeswahlgesetzes +20201217_1_xls-data.xlsx;17.12.2020: Erneuerbare-Energien-Gesetz +20201216_1_xls-data.xlsx;16.12.2020: Arbeitsschutz in der Fleischindustrie +20201211_1_xls-data.xlsx;11.12.2020: Haushaltsgesetz 2021 +20201209_1_xls-data.xlsx;09.12.2020: Beschlussempfehlung des Haushaltsausschusses (hier: Geschäftsbereich Bundeskanzlerin und Bundeskanzleramt) +20201208_2_xls-data.xlsx;08.12.2020: Beschlussempfehlung Haushaltsausschuss zu Beschluss gemäß Artikel 115 Absatz 2 des Grundgesetzes +20201208_1_xls-data.xlsx;08.12.2020: Antrag 19/24969 der FDP (Beschluss gemäß Artikel 115 Absatz 2 des Grundgesetzes) +20201126_3_xls-data.xlsx;26.11.2020: Übereinkommen über ein Einheitliches Patentgericht +20201126_2_xls-data.xlsx;26.11.2020: Europäische Bank für nachhaltige Entwicklung (Beschlussempfehlung) +20201118_4_xls-data.xlsx;18.11.2020: Corona-Maßnahmen (epidemische Lage), Antrag CDU/CSU, SPD +20201118_1_xls-data.xlsx;18.11.2020: Corona-Maßnahmen (epidemische Lage), Änderungsantrag FDP +20201118_2_xls-data.xlsx;18.11.2020: Corona-Maßnahmen (epidemische Lage), Änderungsantrag Bündnis 90/Die Grünen +20201119_1_xls-data.xlsx;19.11.2020: Energiesicherheit gewährleisten - Nord Stream 2 unterstützen (Beschlussempfehlung) +20201118_3_xls-data.xlsx;18.11.2020: Corona-Maßnahmen (epidemische Lage), Gesetzentwurf CDU/CSU, SPD +20201030_1_xls-data.xlsx;30.10.2020: Untersuchungsausschuss Infektionsschutz - Abstrakte Normenkontrolle +20201030_2_xls-data.xlsx;30.10.2020: Einsetzung Untersuchungsausschuss Infektionsschutz +20201029_2_xls-data.xlsx;29.10.2020: Bundeswehreinsatz im Irak (Beschlussempfehlung) +20201009_3_xls-data.xlsx;09.10.2020: Einführungsgesetz zur Abgabenordnung +20201009_2_xls-data.xlsx;09.10.2020: Finanzielle Lasten der Migrationspolitik umfassend offenlegen +20201009_1_xls-data.xlsx;09.10.2020: Bundeswahlgesetz (Wahlversammlungen) +20201008_1_xls-data.xlsx;08.10.2020: Bundeswahlgesetz +20200918_2_xls-data.xlsx;18.09.2020: Konsequenzen aus dem Brand in Moria - Antrag 19/22679 +20200918_1_xls-data.xlsx;18.09.2020: Konsequenzen aus dem Brand in Moria - Beschlussempfehlung 19/22579 zum Antrag 19/22264 +20200917_1_xls-data.xlsx;17.09.2020: Finanzielle Entlastung der Kommunen +20200916_1_xls-data.xlsx;16.09.2020: Mobilität der Zukunft (Beschlussempfehlung) +20200910_2_xls-data.xlsx;10.09.2020: Abstrakte Normenkontrolle - Düngeverordnung (Beschlussempfehlung) +20200703_2_xls-data.xlsx;03.07.2020: Bundeswahlgesetz (Geschäftsordnungsantrag) +20200703_1_xls-data.xlsx;03.07.2020: Kohleausstiegsgesetz (Änderungsantrag 19/20730) +20200702_2_xls-data.xlsx;02.07.2020: Corona-Konjunkturpaket (Entschließungsantrag 19/20739) +20200702_1_xls-data.xlsx;02.07.2020: Corona-Konjunkturpaket (Beschlussempfehlung 19/20716) +20200619_1_xls-data.xlsx;19.06.2020: Antiextremistischer Grundkonsens in Politik und Gesellschaft - Rechtsstaat und Demokratie schützen - Antifa ächten +20200618_2_xls-data.xlsx;18.06.2020: Europäische Arbeitnehmerentsendung +20200617_2_xls-data.xlsx;17.06.2020: Bundeswehreinsatz Libanon (UNIFIL) (Beschlussempfehlung) +20200617_1_xls-data.xlsx;17.06.2020: Bundeswehr im Kosovo (KFOR) (Beschlussempfehlung) +20200529_1_xls-data.xlsx;29.05.2020: Beschlussempfehlung zur Fortsetzung des Bundeswehreinsatzes EUTM Mali +20200529_2_xls-data.xlsx;29.05.2020: Beschlussempfehlung zur Fortsetzung des Bundeswehreinsatzes in Mali (MINUSMA) +20200527_1_xls-data.xlsx;27.05.2020: Beschlussempfehlung zu Operation ATALANTA +20200514_4_xls-data.xlsx;14.05.2020: Bereitstellung des ESM-Instruments ECCL Pandemic Crisis Support (PCSI) +20200514_3_xls-data.xlsx;14.05.2020: Zweites Gesetz zum Schutz der Bevölkerung bei einer epidemischen Lage von nationaler Tragweite +20200514_2_xls-data.xlsx;14.05.2020: Beschlussempfehlung 19/19204 zu Corona-Aufschlag in der Grundsicherung das Existenzminimum sichern +20200514_1_xls-data.xlsx;14.05.2020: Änderungsantrag 19/19221 zu Zweites Gesetz zum Schutz der Bevölkerung bei einer epidemischen Lage von nationaler Tragweite +20200507_1_xls-data.xlsx;07.05.2020: Beschlussempfehlung zum Bundeswehreinsatz EUNAVFOR MED IRINI +20200325_1_xls-data.xlsx;25.03.2020: Beschlussempfehlung zu Beschluss gemäß Artikel 115 Absatz 2 Satz 6 und 7 GG +20200313_1_xls-data.xlsx;13.03.2020: Beschlussempfehlung zum Bundeswehreinsatz in Afghanistan +20200313_2_xls-data.xlsx;13.03.2020: Beschlussempfehlung zum Bundeswehreinsatz SEA GUARDIAN +20200304_1_xls-data.xlsx;04.03.2020: Beschlussempfehlung zu Humanitäres Aufnahmeprogramm für besonders schutzbedürftige Asylsuchende aus Griechenland +20200130_3_xls-data.xlsx;30.01.2020: Antrag Schutz von Hinweisgebern auf EU-Ebene +20200130_2_xls-data.xlsx;30.01.2020: Antrag Engagement- und Ehrenamts-Check +20200130_1_xls-data.xlsx;30.01.2020: Gesetzentwurf Deutsche Stiftung für Engagement und Ehrenamt +20200117_1_xls-data.xlsx;17.01.2020: Freisetzungsrichtlinie auch für neue Gentechnik (Beschlussempfehlung) +20200116_3_xls-data.xlsx;16.01.2020: Entscheidungsbereitschaft bei Organspende (3. Lesung) +20200116_2_xls-data.xlsx;16.01.2020: Entscheidungsbereitschaft bei Organspende (2. Lesung) +20200116_1_xls-data.xlsx;16.01.2020: Organspende - Regelung der doppelten Widerspruchslösung (Lauterbach, Spahn) +20200115_xls-data.xlsx;15.01.2020: Erneute Abstimmung über das Mandat „Einsatz bewaffneter deutscher Streitkräfte im Irak“ im Deutschen Bundestag +20191220_1_xls-data.xlsx;20.12.2019: Beschlussempfehlung des Verteidigungsausschusses zum Antrag der FDP +20191220_2_xls-data.xlsx;20.12.2019: Antrag DIE Linke - Keine Anschaffung, sondern Ächtung bewaffneter Drohnen +20191219_5_xls-data.xlsx;19.12.2019: Entschließungsantrag der Fraktion Die Linke zur Änderung des Bundesnaturschutzgesetzes +20191219_4_xls-data.xlsx;19.12.2019: Gesetzentwurf des Bundesregierung zur Änderung des Bundesnaturschutzgesetzes +20191219_6_xls-data.xlsx;19.12.2019: Gesetzentwurf der Fraktion der FDP zum Wolfsmanagement +20191219_3_xls-data.xlsx;19.12.2019: Gesetz zur Umsetzung des Klimaschutzprogramms 2030 im Steuerrecht +20191219_2_xls-data.xlsx;19.12.2019: Vorgehen gegen die Hisbollah +20191219_1_xls-data.xlsx;19.12.2019: Föderale Sicherheitsarchitektur +20191129_3_xls-data.xlsx;29.11.2019: Entschließungsantrag AfD - Einzelplan 60 (Allgemeine Finanzverwaltung) +20191129_2_xls-data.xlsx;29.11.2019: Entschließungsantrag AfD - Einzelplan 14 (Verteidigung) +20191129_1_xls-data.xlsx;29.11.2019: Haushaltsjahr 2020 +20191127_1_xls-data.xlsx;27.11.2019: Einzelplan 04 - Geschäftsbereich der Bundeskanzlerin und des Bundeskanzleramtes +20191126_1_xls-data.xlsx;26.11.2019: Änderungsantrag der AfD-Fraktion zu Einzelplan 16 (Umweltministerium) +20191115_1_xls-data.xlsx;14.11.2019: Änderung des Luftverkehrsteuergesetzes +20191114_6_xls-data.xlsx;14.11.2019: Beschlussempfehlung zu Einsatz chemischer Pflanzenschutzmittel +20191114_7_xls-data.xlsx;14.11.2019: Beschlussempfehlung zu Verbot von Tierexporten +20191114_5_xls-data.xlsx;14.11.2019: Stärkung der Impfprävention (Masernschutz) +20191114_4_xls-data.xlsx;14.11.2019: Wettbewerbsfähigkeit der deutschen Wirtschaft +20191114_2_xls-data.xlsx;14.11.2019: Gesetzentwurf der FDP: Abschaffung des Solidaritätszuschlags +20191114_1_xls-data.xlsx;14.11.2019: Gesetzentwurf der Bundesregierung: Solidaritätszuschlag +20191114_3_xls-data.xlsx;14.11.2019: Beschlussempfehlung des Finanzausschusses zum Antrag 19/4898 +20191113_1_xls-data.xlsx;13.11.2019: Änderungsantrag zu Direktzahlungen-Durchführungsgesetz +20191113_2_xls-data.xlsx;13.11.2019: Gesetzentwurf Direktzahlungen-Durchführungsgesetz +20191107_2_xls-data.xlsx;07.11.2019: Änderungsantrag der FDP (19/14883) +20191107_1_xls-data.xlsx;07.11.2019: Änderungsantrag der FDP (19/14882) +20191024_3_xls-data.xlsx;24.10.2019: Wettbewerbsfähige Landwirtschaft +20191024_2_xls-data.xlsx;24.10.2019: Russlandpolitik +20191024_1_xls-data.xlsx;24.10.2019: Beschlussempfehlung zu Bundeswehreinsatz zur Bekämpfung des IS-Terrors +20191018_1_xls-data.xlsx;18.10.2019: Gesetzentwurf der CDU/CSU und SPD zur Änderung des Grundgesetzes - Grundsteuerreform +20191018_2_xls-data.xlsx;18.10.2019: Beschlussempfehlung zu Antrag Die Linke - Grundsteuer +20191017_2_xls-data.xlsx;17.10.2019: Verkehrspolitik +20191017_1_xls-data.xlsx;17.10.2019: Entschließungsantrag Die Linke zur Regierungserklärung +20190926_3_xls-data.xlsx;26.09.2019: Änderungsantrag der AfD - Stasi-Unterlagen-Gesetz +20190926_4_xls-data.xlsx;26.09.2019: Gesetzentwurf deutsch-französische Zusammenarbeit und Integration +20190926_7_xls-data.xlsx;26.09.2019: Antrag CDU/CSU, SPD - EU-Beitrittsantrag Albaniens +20190926_6_xls-data.xlsx;26.09.2019: Antrag CDU/CSU, SPD - EU-Beitrittsantrag Nordmazedoniens +20190926_5_xls-data.xlsx;26.09.2019: Entschließungsantrag der AfD zu Gesetzentwurf deutsch-französische Zusammenarbeit und Integration +20190926_1_xls-data.xlsx;26.09.2019: Beschlussempfehlung zu Antrag FDP „Weltweit mehr Wald für den Klimaschutz“ diff --git a/preprocess_de.py b/preprocess_de.py index c4f77de..ef122d6 100644 --- a/preprocess_de.py +++ b/preprocess_de.py @@ -1,37 +1,50 @@ import pandas as pd import os +title_file = "filename_to_titles.csv" + # Preprocess data vote_counter = -1 data = pd.DataFrame() name_column = 'Bezeichnung' -column_to_filename = {} +# Load filename to +filename_to_title_map = {} + +with open(os.path.join("./de/csv/", title_file), 'r') as file: + for line in file.readlines(): + filename, title = line.split(';', 2) + filename_to_title_map[filename] = title + + + +vote_column_to_title = {} voting_features = ['ja', 'nein', 'Enthaltung', 'ungültig'] for dirname, _, filenames in os.walk('./de/csv'): for filename in filenames: - vote_counter += 1 - print(os.path.join(dirname, filename)) - df = pd.read_csv(os.path.join(dirname, filename)) - - # Give each voting behaviour type an identifier from 0 to len(voting_features) - 1 - for i, feature in enumerate(voting_features): - df[feature] *= i - vote_column_name = f'vote_{vote_counter}' - # Map column name of vote to filename -> allows retrieving what the vote was about - column_to_filename[vote_column_name] = filename - - # add feature for the vote - df[vote_column_name] = df[voting_features].sum(axis=1) - - if data.empty: - # if first file that is loaded set data equal to data from first file - data = df[[name_column, vote_column_name]] - else: - # merge data with already loaded data - data = data.merge(df[[name_column, vote_column_name]], on=name_column) + if filename != title_file: + vote_counter += 1 + print(os.path.join(dirname, filename)) + df = pd.read_csv(os.path.join(dirname, filename)) + + # Give each voting behaviour type an identifier from 0 to len(voting_features) - 1 + for i, feature in enumerate(voting_features): + df[feature] *= i + vote_column_name = f'vote_{vote_counter}' + # Map column name of vote to filename -> allows retrieving what the vote was about + vote_column_to_title[vote_column_name] = filename_to_title_map[filename] + + # add feature for the vote + df[vote_column_name] = df[voting_features].sum(axis=1) + + if data.empty: + # if first file that is loaded set data equal to data from first file + data = df[[name_column, vote_column_name]] + else: + # merge data with already loaded data + data = data.merge(df[[name_column, vote_column_name]], on=name_column) -print(column_to_filename) +print(vote_column_to_title) print(data) diff --git a/preprocess_uk.py b/preprocess_uk.py index c7432c6..b33c127 100644 --- a/preprocess_uk.py +++ b/preprocess_uk.py @@ -8,7 +8,7 @@ data = pd.DataFrame() name_column = 'Member' vote_column = 'Vote' -column_to_filename = {} +vote_column_to_title = {} voting_features = {'Aye':0, 'No':1, 'No Vote Recorded':2} for dirname, _, filenames in os.walk('./uk/csv'): @@ -30,7 +30,7 @@ for dirname, _, filenames in os.walk('./uk/csv'): df=df.rename(columns={vote_column:vote_column_name}) # Map column name of vote to title -> allows retrieving what the vote was about - column_to_filename[vote_column_name] = title_df.iat[2,0] + vote_column_to_title[vote_column_name] = title_df.iat[2,0] if data.empty: # if first file that is loaded set data equal to data from first file @@ -39,5 +39,5 @@ for dirname, _, filenames in os.walk('./uk/csv'): # merge data with already loaded data data = data.merge(df[[name_column, vote_column_name]], on=name_column) -print(column_to_filename) +print(vote_column_to_title) print(data) diff --git a/requirements.txt b/requirements.txt index 21f1e8d..aa4dad9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,5 @@ openpyxl==3.0.7 pandas==1.2.4 + +# Optional but needed for scraping +selenium==3.141.0 \ No newline at end of file diff --git a/scrape_de.py b/scrape_de.py new file mode 100644 index 0000000..2a92f51 --- /dev/null +++ b/scrape_de.py @@ -0,0 +1,125 @@ +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as ec +from selenium import webdriver +from selenium.common.exceptions import NoSuchElementException +from selenium.webdriver.chrome.options import Options +from selenium.webdriver.common.action_chains import ActionChains + +import multiprocessing + +import requests + +import time + +# Settings +DRIVER_PATH = "./chromedriver" +WAIT_TIME_SEC = 7 + +# Filter +DATE_FROM = "01.01.2019" +DATE_TO = "20.04.2021" + +# Output +DOWNLOAD_FOLDER = "de/input/" + + +def get_element_by_xpath_or_false(driver, xpath): + try: + element = driver.find_element_by_xpath(xpath) + except NoSuchElementException: + return False + return element + +def get_title_and_url(): + ''' + function to get titles and URLS for dataset + ''' + title_url_list = [] + + url = r'https://www.bundestag.de/parlament/plenum/abstimmung/liste' + + options = Options() + options.add_argument("--headless") + options.add_argument("window-size=800,600") + + driver = webdriver.Chrome(options=options, executable_path=DRIVER_PATH) + driver.get(url) + + WebDriverWait(driver, 10).until(ec.visibility_of_element_located((By.XPATH, "//table"))) + + driver.find_element_by_xpath('//input[starts-with(@id, "from_")]').send_keys(DATE_FROM) + driver.find_element_by_xpath('//input[starts-with(@id, "to_")]').send_keys(DATE_TO) + driver.find_element_by_xpath('//div[@class= "bt-filterzeile-scroller"]').click() + + running = True + while running: + # as the side does not provide any loading indicators we need to wait after performing an action that requires loading + time.sleep(WAIT_TIME_SEC) + + # element selector to get elements that contain title and link to excel file + element_selector = '//div[contains(@class, "bt-standard-conten") and not(@aria-hidden="true")]/table//div[@class= "bt-documents-description"]' + elements = driver.find_elements_by_xpath(element_selector) + + for element in elements: + if element.is_displayed(): + title_element = get_element_by_xpath_or_false(element, './p/strong') + link_element = get_element_by_xpath_or_false(element, './ul/li/a[starts-with(@title, "XLSX")]') + + if title_element and link_element: + title = title_element.text + link = link_element.get_attribute("href") + title_url_list.append((title, link)) + print(title) + print(link) + + # Is there a next page + element = get_element_by_xpath_or_false(driver, '//button[contains(@class, "slick-next") and not(contains(@class, "slick-disabled"))]') + if element: + # Move to bottom of page to avoid share button when clicking on element + ActionChains(driver).move_to_element(driver.find_element_by_xpath('//div[contains(@class, "bt-footer-service")]')).perform() + element.click() + else: + running = False + driver.quit() + return title_url_list + + +def save_to_file(file_url, folder): + ''' + function to save file from url into specified folder + ''' + + file_name = file_url.split("/")[-1] + req = requests.get(file_url) + with open(folder + file_name,'wb') as output_file: + output_file.write(req.content) + return file_name + +def save_titles(title_filename_list, folder): + ''' + function to save title file mappings into folder as 'filename_to_titles.csv' + ''' + with open(folder + 'filename_to_titles.csv', 'wt') as output_file: + for title, file_name in title_filename_list: + output_file.write(f'{file_name};{title}\n') + +def title_url_list_element_saver(x:(str, str)): + """ Function that downloads the file and returns a tuple of title and filename + + Args: + x (str, str): tuple of title and url + + Returns: + (str, str): returns a tuple of title and filename + """ + print(f'Saving {x[0]}') + return x[0], save_to_file(x[1], DOWNLOAD_FOLDER) + + +title_url_list = get_title_and_url() + +pool = multiprocessing.Pool() +title_filenames_map = pool.map(title_url_list_element_saver, title_url_list) +save_titles(title_filenames_map, DOWNLOAD_FOLDER) +