Χαιρετώ την παρέα,
μαθαίνω Python και σκέφτομαι να επεκτείνω τις γνώσεις μου σε Pandas, Numpy, Matplotlib.
Σκεφτόμουν να βρω κάποια δεδομένα για να μπορώ να τα αξιοποιήσω μέσω αυτών των βιβλιοθηκών ώστε παράλληλα να μαθαίνω κιόλας. Ψάχνοντας από δω και από εκεί για open data, έπεσα στην σελίδα https://data.gov.gr/. Έκανα εγγραφή και πήρα ένα API Token. Για αρχή είπα να δοκιμάσω να τραβήξω δεδομένα για το επιβατικό κοινό στον ΟΑΣΑ. Δεξιά έχει ένα πράσινο κουμπάκι το οποίο πατώντας το σου δείνει μεταξύ άλλων και έτοιμο κώδικα σε python για να τραβήξεις τα δεδομένα που θέλεις μέσω Python χρησιμοποιώντας την βιβλιοθήκη responses.
Το πρόβλημα που έχω είναι ότι το script που δίνει η ίδια η σελίδα αν και απλό δεν λειτουργεί πολύ σωστά. Συγκεκριμένα επιχειρεί να κατεβάσει όλα τα δεδομένα από όλη την χρονική περίοδο, δηλαδή κάπου για 4 χρόνια. Η διαδικασία σταματάει άμεσα και μου βγάζει μήνυμα να επιλέξω μικρότερο χρονικό όριο. Το παράδειγμα που δίνει δεν διευκρινίζει πως να επιλέξουμε χρονικό όριο, στο ίντερνετ ότι πληροφορίες βρήκα δεν βοήθησαν, το Copilot πρότεινε κάποιες λύσεις οι οποίες επίσης δεν βοήθησαν, και δεν έχω την παραμικρή ιδέα για το πως λειτουργεί γενικά η βιβλιοθήκη responses για να κάνω δοκιμές.
Επίσης ασχέτως από το συγκεκριμένα παράδειγμα, ενδεχομένως να θέλω να αξιοποιήσω την Python και τις βιβλιοθήκες που προανέφερα για να τραβήξω δεδομένα και από αλλού, οπότε ίσως θα ήταν καλό να βρεθεί το πως μπορούμε να τραβήξουμε δεδομένα για custom χρονική περίοδο. Έχει κανείς καμιά ιδέα;
Να σημειώσω ότι το copilot μου πρότεινε κάποιες λύσεις, να βάλω είτε στο headers είτε στο params του presponses.get κάποιες μεταβλητές σαν 'startDate', 'endDate' ή start_date, end_date και διάφορους άλλους συνδυασμούς και δεν δούλεψε τίποτα, οπότε μήπως κάποιος ποιο έμπειρος προγραμματιστής σε APIs μήπως γνωρίζει κάτι παραπάνω; Κάθε πληροφορία δεκτή.
Να σημειώσω ότι έχω τραβήξει δεδομένα από εδώ χωρίς κανένα πρόβλημα καθώς δεν διαθέτει κανένα χρονικό περιορισμό οπότε μπορώ να χρησιμοποιήσω το script ως έχει χωρίς να χρειάζεται να ψάξω τι switches να βάλω στο headers για να λειτουργήσει για το χρονικό όριο.
Εμφάνιση 1-3 από 3
-
04-10-24, 11:17 data.gov.gr, API, Python, Date range. #1
Τελευταία επεξεργασία από το μέλος goku : 04-10-24 στις 11:23.
-
04-10-24, 11:32 Απάντηση: data.gov.gr, API, Python, Date range. #2
Δοκίμασε να βάλεις σαν Query Parameters τα date_from και date_to με format YYYY-MM-DD.
Δεν ξέρω αν υπάρχει επίσημο documentation αλλά αυτές περνάει η javascript που τρέχει στον browser και αυτές χρησιμοποιεί και η βιβλιοθήκη pydatagovgr.
-
04-10-24, 12:02 Απάντηση: data.gov.gr, API, Python, Date range. #3
Ρε φίλε τι είπες τώρα; είχα δοκιμάσει διάφορους συνδυασμούς και δεν δούλευε κανένας. Τον συγκεκριμένο συνδυασμό τον δοκίμασα και δουλεύει, αυτό ήταν. Το πάλευα 2 μέρες, είχα χάσει τον ύπνο μου. Κατάφερα και πήρα δεδομένα για μικρή χρονική περίοδο και να τα κάνω dump σε αρχείο json για περεταίρω επεξεργασία εκ των υστέρων. Πρέπει κάποια στιγμή να καθίσω να μάθω για τα APIs και την βιβλιοθήκη responses.
Τώρα αντιμετωπίζω άλλο πρόβλημα καθώς τις ονομασίες των στάσεων τις έχει στα Ελληνικά και τις εμφανίζει κάπως έτσι "\u03a3\u03a5\u039dT\u0391\u0393\u039c\u0391", υποθέτω ότι πρέπει να βρω τι encoding είναι και να το ορίσω σωστά, οπότε συνεχίζω το ψάξιμο.
- - - Updated - - -
Βρέθηκε και η λύση στο encoding, χρησιμοποιώντας encoding='utf-8' στις παραμέτρους της βιβλιοθήκης responses και κάνοντας εκτύπωση απευθείας στο terminal, χωρίς αποθήκευση σε αρχείο, τότε μου τα τυπώνει σωστά. Είχα πρόβλημα στην αποθήκευση σε αρχείο, οπότε στο άνοιγμα του αρχείου για εγγραφή όρισα ότι πρέπει να είναι utf-8 και όταν κάνω json.dump όρισα ότι οι χαρακτήρες δεν είναι ASCII, χρησιμοποιώντας τα αντίστοιχα switches.
Bookmarks