Lanike71 Δημοσ. 20 Νοεμβρίου 2016 Δημοσ. 20 Νοεμβρίου 2016 Θέλω να κάνω parsing αποτελέσματα τυχερών παιχνιδιών. Το κακό είναι ότι φαινομενικά, οι πίνακες είναι στο ίδιο λινκ.Παράδειγμα η κάτω σελίδα: http://www.opap.gr/el/web/guest/propogoal-draw-results Μπορείς να περιηγηθείς στα αποτελέσματα, το λινκ παραμένει ίδιο. Πώς γίνεται parsing σε κάτι τέτοιο;
_Gikoskos_ Δημοσ. 20 Νοεμβρίου 2016 Δημοσ. 20 Νοεμβρίου 2016 Το εχω κανει σε C με libcurl για το http προτοκολο και libxml2 για διαβασμα των xml αρχειων των αποτελεσματων. Η ΟΠΑΠ εχει ενα API με το οποιο μπορεις να κατεβαζεις πολυ ευκολα τα αποτελεσματα σε μορφη xml και για να τα διαβαζεις εξισου ευκολα. Συνηθως αυτα τα API τα βρισκεις αν πας στο τελος τελος της σελιδας, οπως βρηκα και εγω του ΟΠΑΠ. Είναι παρα πολυ ευκολο, απλα διαβασε τις οδηγιες για το API σου και μπορεις να κανεις δουλεια ευκολα. Πχ για το τελευταιο προπο σαββατου που παιχτηκε το URL ειναι αυτο http://applications.opap.gr/DrawsRestServices/proposat/last.xml Εχει και μορφη json η οποια μπορει να ειναι πιο γρηγορη να παρσαρεις, αν ξερεις πως δουλευει. Μια παρατηρηση: επειδη στο προγραμμα μου ηθελα να μπορω να κατεβαζω παρα πολλες κληρωσεις "ταυτοχρονα" (με νηματα δηλαδη), το υλοποιησα ωστε να μπορεις να ρυθμισεις εσυ εναν αριθμο νηματων απο 1-150. Αυτό το έκανα γιατι αν πας να κατεβασεις πολλα αρχεια xml σειριακα οι σερβερς είναι καπως αργοι και θα παρει αρκετη ωρα (φαντασου 100 κληρωσεις). Ωστοσο οταν πηγα να κανω πολλα downloads ταυτοχρονα, παρατηρησα πως οι σερβερς μου εστελναν πισω corrupted αρχεια. Μου εστελναν java exceptions απο το backend του σερβερ τους, απ'οτι καταλαβα (σφαλμα το οποιο μπορει να ειναι και exploitable για οποιον ασχολειται). Γι' αυτο προσπαθω να τα κατεβασω αρκετες φορες μεχρι να κατεβει σωστο xml αρχειο, το οποιο θα σου συνιστουσα να κανεις και εσυ αν υλοποιησεις προγραμμα που χρησιμοποιει το API τους. Εχω και ενα εκτελεσιμο στα releases αν θες να δεις πως δουλευει αυτο (ειναι σε γραφικο περιβαλλον για windows). 1
παπι Δημοσ. 20 Νοεμβρίου 2016 Δημοσ. 20 Νοεμβρίου 2016 Καλο ειναι, πριν το parse να ριχνουμε ενα google τυπου "opap api" για να δουμε αν εχουν απι. Παλια θυμαμαι ο οπαπ ειχε σε κομεντς τις οδηγιες για το απι
Luciddream Δημοσ. 20 Νοεμβρίου 2016 Δημοσ. 20 Νοεμβρίου 2016 Υπάρχει και μια πολύ πιο απλή λύση απο του Gikoskos, αλλά απαιτεί γνώση "περίεργης" γλώσσας. Εχει και μορφη json η οποια μπορει να ειναι πιο γρηγορη να παρσαρεις, αν ξερεις πως δουλευει. source? (για το bold)
Επισκέπτης Δημοσ. 20 Νοεμβρίου 2016 Δημοσ. 20 Νοεμβρίου 2016 Το link μένει το ίδιο γιατί τα φορτώνει με ajax. Πρέπει να χρησιμοποιήσεις έναν http debugger για να δεις το endpoint από όπου φορτώνει τα data. Δοκίμασε firebug αν είσαι σε Firefox ή Fiddler που δουλεύει ως standalone. Στη σελίδα του ΟΠΑΠ για παράδειγμα φορτώνει τα data από το παρακάτω url: http://www.opap.gr/el/web/guest/propogoal-draw-results?p_p_id=propogoalhibernate_WAR_PropoGoalHibernateportlet_INSTANCE_Ixy7&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=draw&p_p_cacheability=cacheLevelPage&p_p_col_id=_118_INSTANCE_3mzC__column-2&p_p_col_count=1&draw=201647
_Gikoskos_ Δημοσ. 20 Νοεμβρίου 2016 Δημοσ. 20 Νοεμβρίου 2016 Υπάρχει και μια πολύ πιο απλή λύση απο του Gikoskos, αλλά απαιτεί γνώση "περίεργης" γλώσσας. source? (για το bold) Δεν εννοω στην C, αλλα σε javascript json parsing συνήθως βγαίνει πιο γρηγορα, καθως json ειναι συνταξη javascript. Εχει βεβαια και καποια κομματια που δεν υπαρχουν στην javascript, δηλαδη δεν ειναι ακριβως υποσυνολο της js, γι αυτο λεω "συνηθως". Η λύση με την C εννοειται πως δεν ειναι και τοσο απλη. Καλυτερα, και πιο δομημενα, θα εβγαινε σε γλωσσα υψηλοτερου επιπεδου που επικοινωνει πιο ανετα με τεχνολογιες web (python, C#, Java, Javascript κτλ).
Luciddream Δημοσ. 20 Νοεμβρίου 2016 Δημοσ. 20 Νοεμβρίου 2016 Συμφωνώ, απλά γενικά υπάρχει μια ιδέα ότι οι parsers του JSON είναι πιο γρήγοροι απο του XML χωρίς να υπάρχουν γενικά αποδείξεις. Anyway, σαν μια εναλλακτική πρόταση την οποία δεν την προτείνω για κανένα λόγο είναι η χρήση ενός XQuery processor [1] [2]. Δεν την προτείνω όχι επειδή δεν είναι καλή λύση, αλλά γιατί έχει μεγάλο learning curve το οποίο για τέτοιες καταστάσεις θα είναι μάλλον χάσιμο χρόνου, αλλά σου δίνει μια δυναμική γλώσσα με την οποία μπορεις να κάνεις ότι θέλεις σε XML / Json. Μπορείς ακόμα να παρσάρεις και το HTML απευθείας χωρίς να σου δίνει κάποιο API η σελίδα που σε ενδιαφέρει.
Lanike71 Δημοσ. 20 Νοεμβρίου 2016 Μέλος Δημοσ. 20 Νοεμβρίου 2016 Οι ομάδες που απαρτίζουν το δελτίο, είναι διαθέσιμες ή είναι μόνο τα αποτελέσματα; Στη σελίδα του οπαπ για τα web services δεν αναφέρει κάτι. Αν όχι, δώρο-άδωρο για μένα.
Luciddream Δημοσ. 20 Νοεμβρίου 2016 Δημοσ. 20 Νοεμβρίου 2016 Οι ομάδες που απαρτίζουν το δελτίο, είναι διαθέσιμες ή είναι μόνο τα αποτελέσματα; Στη σελίδα του οπαπ για τα web services δεν αναφέρει κάτι. Αν όχι, δώρο-άδωρο για μένα. well, στο λινκ που σου έγραψε παραπάνω ο elorant τα γράφει όλα. και δεν φαίνεται να είναι "δυναμικό" το url, αν αλλάξεις την τελευταία παράμετρο που είναι year+διαγωνισμός, παίρνεις ότι ημερομηνία θες σε JSON. p.x draw=201648 για τον επόμενο διαγωνισμό. 1
Lanike71 Δημοσ. 11 Ιουλίου 2017 Μέλος Δημοσ. 11 Ιουλίου 2017 Σόρρυ παιδιά που επαναφέρω το θέμα, αλλά προσπαθώ με εφαρμογές όπως το firebug και το chromonocle για chromium, να βρω ποιό script φέρνει τα data στη σελίδα και δεν τα καταφέρνω. Αν θέλει κάποιος ας βοηθήσει στο πως διαβάζουμε από που τραβάει τα δεδομένα. Επίσης και στη σελίδα http://praktoreio.pamestoixima.gr/el/retail-betting#r/ #start - #end, φορτώνονται κάποιοι πίνακες με δεδομένα. Αντικαταστήστε τα #start και #end με καποιους αριθμούς για να πάρετε κάποια δεδομένα, πχ 685-685 (είναι οι ημέρες μετά από κάποια ημερομηνία πριν 2 χρόνια περίπου). Ευχαριστώ για το χρόνο σας.
albNik Δημοσ. 11 Ιουλίου 2017 Δημοσ. 11 Ιουλίου 2017 Ενας τροπος για να παρσαρεις ευκολα SPA σελιδες σε .ΝΕΤ ειναι με το WebBrowser component το οποιο υποστηρίζει javascript . Εσυ απλα διαβαζεις τα δεδομένα (σαν να κάνεις inspect το htlm) την τρεχων στιγμή χωρίς να σε νοιαζει πως προήλθαν. Μπορεις προγραμματιστικα να κανεις click σε κουμπιά, να επιλεγεις ημερομηνίες, να εισαγεις κειμενο σε input ...
Επισκέπτης Δημοσ. 12 Ιουλίου 2017 Δημοσ. 12 Ιουλίου 2017 Σοβαρό http debugging δεν πρόκειται να κάνεις με plugins. Κατέβασε το Fiddler ή το Charles (commercial) για να έχεις καλύτερο έλεγχο των endpoints.
k33theod Δημοσ. 12 Ιουλίου 2017 Δημοσ. 12 Ιουλίου 2017 (επεξεργασμένο) Υπάρχει μια βιβλιοθήκη που λέγεται selenium http://www.seleniumhq.org/ Αυτή δουλεύει από όσο ξέρω με αρκετές γλώσσες Σε python είναι σχετικά εύκολο >>> from selenium import webdriver >>> driver = webdriver.Chrome() >>> driver.get('http://www.opap.gr/el/web/guest/propogoal-draw-results') >>> a=driver.find_element_by_id('numbers-container') >>> a.text '20\n21\n23\n8\n13\n26\n29\n5' >>> a=driver.find_element_by_id('match-table1') >>> print(a.text) 1 ΑΤΛΕΤΙΚΟ ΓΚΟΪΑΝΙΕΝΣΕ - ΒΙΤΟΡΙΑ ΜΠΑΪΑ 1-2 2 ΒΑΣΚΟ ΝΤΑ ΓΚΑΜΑ - ΦΛΑΜΕΝΓΚΟ 0-1 3 ΓΚΡΕΜΙΟ - ΑΒΑΪ 0-2 4 ΚΟΡΙΝΘΙΑΝΣ - ΠΟΝΤΕ ΠΡΕΤΑ 2-0 5 ΚΡΟΥΖΕΪΡΟ - ΠΑΛΜΕΪΡΑΣ 3-1 6 ΜΠΑΪΑ - ΦΛΟΥΜΙΝΕΝΣΕ 1-1 7 ΜΠΟΤΑΦΟΓΚΟ - ΑΤΛΕΤΙΚΟ ΜΙΝΕΪΡΟ 1-1 8 ΣΑΝΤΟΣ - ΣΑΟ ΠΑΟΛΟ 3-2 9 ΣΑΠΕΚΟΕΝΣΕ - ΑΤΛΕΤΙΚΟ ΠΑΡΑΝΑΕΝΣΕ 1-1 10 ΓΚΕΤΕΜΠΟΡΓΚ - ΧΑΛΜΣΤΑΝΤ 1-1 11 ΕΣΤΕΡΣΟΥΝΤ - ΓΙΟΝΣΕΠΙΝΓΚ 1-1 12 ΚΑΛΜΑΡ - ΑΪΚ ΣΤΟΚΧΟΛΜΗΣ 0-1 13 ΝΟΡΚΕΠΙΝΓΚ - ΕΛΦΣΜΠΟΡΓΚ 1-3 14 ΣΙΡΙΟΥΣ - ΑΦΚ ΕΣΚΙΛΣΤΟΥΝΑ 1-0 15 ΤΖΟΥΡΓΚΑΡΝΤΕΝ - ΣΟΥΝΤΣΒΑΛ 2-1 Επεξ/σία 12 Ιουλίου 2017 από k33theod 1
παπι Δημοσ. 12 Ιουλίου 2017 Δημοσ. 12 Ιουλίου 2017 Σόρρυ παιδιά που επαναφέρω το θέμα, αλλά προσπαθώ με εφαρμογές όπως το firebug και το chromonocle για chromium, να βρω ποιό script φέρνει τα data στη σελίδα και δεν τα καταφέρνω. Αν θέλει κάποιος ας βοηθήσει στο πως διαβάζουμε από που τραβάει τα δεδομένα. Επίσης και στη σελίδα http://praktoreio.pamestoixima.gr/el/retail-betting#r/ #start - #end, φορτώνονται κάποιοι πίνακες με δεδομένα. Αντικαταστήστε τα #start και #end με καποιους αριθμούς για να πάρετε κάποια δεδομένα, πχ 685-685 (είναι οι ημέρες μετά από κάποια ημερομηνία πριν 2 χρόνια περίπου). Ευχαριστώ για το χρόνο σας. Στο chrome εχει ενα tab που λεει network. Πανε δες ποιο ειναι το service
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα