Anonim

Dado que repetidamente ha dado una fecha y luego no pudo lanzar su API, decidí tomar el asunto en mis propias manos. Tenga en cuenta que esta no es la forma ideal de hacer las cosas, pero por ahora funciona. Quería crear un gráfico social de nuestras páginas más populares para poder saber qué tipo de fotos y contenido resonaban con nuestros espectadores, así que se me ocurrió el script a continuación y luego busqué en cada URL de nuestra base de datos y obtuve los datos que obtuve. necesario.

Profundicé en el iframe creado por una llamada de botón y se me ocurrió esta url:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
Bueno, eso fue fácil, el número se muestra allí mismo en su propia identificación div CountBubble. Así que lo curlé y usé la biblioteca php simple_html_dom para analizar. Sin embargo, seguía devolviendo 0. Whoops! Ese número se cambia con javascript después de cargar la página. Debería haber visto la fuente en lugar de inspeccionar el elemento. Entonces, en cambio, veo la fuente y hay una buena pieza de código sentada para mi placer de programación.

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

De eso, deduzco que la siguiente URL probablemente extraerá los datos que necesito,
http: //api..com/v1/urls/count.json? callback = recibirCount & url = http: //www.allrecipes.com
que muestra:

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

Por lo tanto, sus datos json envueltos en una llamada de función desde la API que aún no han lanzado públicamente. Que conveniente. A continuación se muestra el pequeño código que necesita para que esto funcione en PHP. Debe tener cURL habilitado en su servidor.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = recibirCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // obtener el html a través de una función que llama a cURL $ html = str_replace ("recibirCount (", "", $ html); // eliminar la llamada a la función en la que se envuelven los datos en $ html = substr ($ html, "", -1); $ = json_decode ($ html); // convertir de json a php array $ pincount = $ -> count; echo $ pincount; // está la función numérica 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); curl_close ($ h $) ;}

Como puede ver, extraemos los datos con curl y luego eliminamos la llamada de función que se envuelve alrededor de los datos json. Entonces es solo una cuestión de usar json_decode para convertir los datos json en una matriz php. Voila! Todo listo. Hasta ahora he ejecutado alrededor de 3.000 URL y los datos no han devuelto ningún problema. Fue un poco lento a veces, no estoy seguro si por diseño o por. Todavía está tirando y almacenando los datos mientras escribo esto. Estoy seguro de que en algún momento habrá algún tipo de limitación de velocidad, pero hasta ahora no me he encontrado con ningún muro. Tal vez ni siquiera se supone que esto esté oculto para los programadores, pero que yo sepa, no hay soporte oficial a menos que seas uno de los pocos editores con los que han elegido trabajar.

Obtener número de pines pinterest en php