Anonim

Comme il a à plusieurs reprises donné une date et par la suite omis de publier son API, j'ai décidé de prendre l'affaire en main. S'il vous plaît noter que ce n'est pas la façon idéale de faire des choses, mais, pour l'instant, cela fonctionne. Je voulais créer un graphique social de nos pages les plus populaires pour que nous puissions savoir quel type de photos et de contenu retentissaient auprès de nos téléspectateurs. J'ai donc conçu le script ci-dessous, puis j'ai parcouru toutes les URL de notre base de données et obtenu les données. nécessaire.

J'ai exploré l'iframe créé par une légende de bouton et créé l'URL suivante:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
Cela a été facile, le nombre est affiché directement dans son propre identifiant div CountBubble. Donc je l'ai curlée, et j'ai utilisé la bibliothèque php simple_html_dom pour analyser. Il a continué à revenir 0 cependant. Oups! Ce nombre est changé avec javascript après le chargement de la page. Aurait dû voir la source au lieu d'inspecter l'élément. Donc, je regarde la source à la place et il y a ce beau morceau de code assis juste là pour mon plaisir de programmation.

snode.setAttribute ('src', '//api..com/v1/urls/count.json?callback=receiveCount&url='+targetUrl);

À partir de cela, je suppose que l'URL suivante va probablement extraire les données dont j'ai besoin,
http: //api..com/v1/urls/count.json? callback = receiveCount & url = http: //www.allrecipes.com
qui affiche:

receiveCount ({"count": 1148, "url": "http://www.allrecipes.com"})

Ainsi, ses données JSON sont encapsulées dans un appel de fonction de l’API qu’elles n’ont pas encore publiées. Comme c'est pratique. Vous trouverez ci-dessous le peu de code dont vous avez besoin pour que cela fonctionne en PHP. CURL doit être activé sur votre serveur.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = receiveCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // récupère le code HTML via une fonction qui appelle cURL $ html = str_replace ("receiveCount (", "", $ html); // supprime l'appel de fonction dont les données sont encapsulées dans $ html = substr ($ html, "", -1); $ = json_decode ($ html); // convertissez un tableau en jp en php $ pincount = $ -> count; echo $ pincount; // existe la fonction numérique pull_html ($ url) {$ ch = curl_init () ; curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 10); $ html = curl_exec ($ ch). ;}

Comme vous pouvez le constater, nous extrayons les données avec curl, puis nous supprimons l'appel de fonction encapsulé autour des données json. Ensuite, il suffit d'utiliser json_decode pour transformer les données json en tableau php. Voila! Terminé. Jusqu'à présent, j'ai parcouru environ 3 000 URL et les données n'ont renvoyé aucun problème. C'était un peu lent parfois, pas sûr si par la conception ou par. Il tire toujours et stocke les données pendant que je tape ceci. Je suis sûr que, à un moment donné, il y aura une sorte de limitation du taux, mais je n'ai encore rencontré aucun mur. Peut-être que ceci n'est même pas censé être caché des programmeurs, mais pour autant que je sache, il n'y a aucun soutien officiel sauf si vous êtes l'un des rares éditeurs avec lequel ils ont choisi de travailler.

Obtenir le nombre de broches pinterest en php