Δεδομένου ότι έχει επανειλημμένα δώσει ημερομηνία και στη συνέχεια απέτυχε να απελευθερώσει το API τους, αποφάσισα να κάνω το θέμα στα χέρια μου. Σημειώστε ότι αυτός δεν είναι ο ιδανικός τρόπος για να κάνετε τα πράγματα, αλλά, για τώρα, λειτουργεί. Ήθελα να οικοδομήσω ένα κοινωνικό γράφημα των δημοφιλέστερων σελίδων μας, ώστε να γνωρίζουμε ποια είδη φωτογραφιών και περιεχομένου αντέγραφαν με τους θεατές μας, οπότε ήρθα με το σενάριο παρακάτω και έπειτα βρήκα σε κάθε διεύθυνση URL στη βάση δεδομένων μας και πήρα τα δεδομένα εγώ απαιτείται.
Έχω τρυπηθεί κάτω στο iframe που δημιουργήθηκε με ένα κουμπί εξήγηση και ήρθε με αυτό το url:
http: //pinit-cdn..com/pinit.html; url = http: //www.allrecipes.com
Λοιπόν αυτό ήταν εύκολο, ο αριθμός εμφανίζεται ακριβώς εκεί στη δική του ταυτότητα div CountBubble. Γι 'αυτό και έκανα κούτσουρα και χρησιμοποίησα τη βιβλιοθήκη php της simple_html_dom για να αναλύσω. Συνέχισε όμως να επιστρέφει 0. Περίπου! Αυτός ο αριθμός αλλάζει με javascript μετά τη φόρτωση της σελίδας. Θα έπρεπε να έχουν δει την πηγή αντί για την επιθεώρηση του στοιχείου. Γι 'αυτό βλέπω την πηγή αντ' αυτού και υπάρχει αυτό το ωραίο κομμάτι κώδικα απλά κάθεται εκεί για την ευχαρίστηση προγραμματισμού μου.
snode.setAttribute ('src', '//api..com/v1/urls/count.json?callback=receiveCount&url='+targetUrl).
Από αυτό, θα συγκεντρωθεί το ακόλουθο URL θα τραβήξει πιθανώς τα δεδομένα που χρειάζομαι,
http: //api..com/v1/urls/count.json? callback = receiveCount & url = http: //www.allrecipes.com
που εμφανίζει:
receiveCount ({"count": 1148, "url": "http://www.allrecipes.com"})
Έτσι, τα δεδομένα json του τυλιγμένα σε μια κλήση λειτουργίας από το API που δεν έχουν κυκλοφορήσει ακόμη δημόσια. Πόσο βολικό. Παρακάτω είναι το μικρό κομμάτι του κώδικα που πρέπει να κάνετε αυτό το έργο στην PHP. Πρέπει να έχετε ενεργοποιήσει το cURL στον διακομιστή σας.
$ pinurl = "http: //api..com/v1/urls/count.json? callback = receiveCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // παίρνει το html μέσω μιας συνάρτησης που καλεί cURL $ html = str_replace ("receiveCount (", "", $ html); // αφαιρέστε την κλήση λειτουργίας, τα δεδομένα είναι τυλιγμένα σε $ html = substr ($ html, -1); $ = json_decode ($ html); // μετατρέψτε από json σε php array $ pincount = $ -> count; echo $ pincount; // υπάρχει η λειτουργία αριθμού pull_html ($ url) {$ ch = curl_init ($ ch, CURLOPT_RETURNTRANSFER, 1), curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 10), $ html = curl_exec ($ ch), curl_close ($ ch), επιστροφή $ html ·}
Όπως βλέπετε, τραβιζόμαστε τα δεδομένα με καμπύλωση και στη συνέχεια αφαιρούμε την κλήση λειτουργίας που είναι τυλιγμένη γύρω από τα δεδομένα json. Στη συνέχεια, πρόκειται απλώς για τη χρήση του json_decode για τη μετατροπή των δεδομένων json σε μια συστοιχία php. Voila! Ολα τελείωσαν. Έχω τρέξει μέχρι τώρα 3.000 διευθύνσεις URL και τα δεδομένα δεν επέστρεψαν κανένα πρόβλημα. Ήταν λίγο αργή κατά καιρούς, δεν είναι βέβαιο αν από το σχεδιασμό ή από. Της τράβηγμα και αποθήκευση των δεδομένων, όπως πληκτρολογώ αυτό. Είμαι σίγουρος ότι κάποια στιγμή θα υπάρξει κάποιο είδος περιορισμού, αλλά δεν έχω φτάσει σε κανέναν τοίχο μέχρι στιγμής. Ίσως αυτό να μην υποτιμάται ακόμη και από τους προγραμματιστές, αλλά από όσο γνωρίζω, δεν υπάρχει επίσημη υποστήριξη αν δεν είστε ένας από τους λίγους εκδότες με τους οποίους έχουν επιλέξει να συνεργαστούν.
