Anonim

Ker sem večkrat navedel datum in nato pozneje ni uspel izdati njihovega API-ja, sem se odločil, da zadevo vzamem v svoje roke. Upoštevajte, da to ni idealen način za početje, vendar za zdaj deluje. Želel sem sestaviti socialni graf naših najbolj priljubljenih strani, da bi lahko vedeli, kakšne fotografije in vsebina je odmevala pri naših gledalcih, zato sem si omislila spodnji skript in nato prelistala vsak URL v naši bazi podatkov in dobila podatke I potrebno.

Pognal sem se v iframe, ki ga je ustvaril oblačilo za gumbe in prišel do tega URL-ja:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
No, to je bilo enostavno, številka je prikazana tam v svojem lastnem ID-ju CountBubble. Torej sem jo zakrivil in uporabil knjižnico php simple_html_dom za razčlenitev. Še vedno pa se je vračalo 0. Ups! Ko se stran naloži, se ta številka spremeni s pomočjo JavaScript. Morali bi si ogledati vir, namesto da bi pregledali element. Zato namesto tega pogledam vir in tam imam ta lepi delček kode, ki mi je v veselje do programiranja.

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

Na podlagi tega bom naslednji URL verjetno potegnil podatke, ki jih potrebujem,
http: //api..com/v1/urls/count.json? callback = acceptCount & url = http: //www.allrecipes.com
ki prikazuje:

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

Njeni podatki json, zajeti v funkcijski klic API-ja, še niso javno objavili. Kako priročno. Spodaj je nekaj kode, ki jo potrebujete za to delo v PHP. Na strežniku morate imeti omogočen CURL.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = acceptCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // dobite html skozi funkcijo, ki pokliče cURL $ html = str_replace ("acceptCount (", "", $ html); // odstranite klic funkcije, podatki so zaviti v $ html = substr ($ html, "", -1); $ = json_decode ($ html); // pretvori iz json v php array $ pincount = $ -> count; echo $ pincount; // obstaja številčna funkcija 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 ($); ;}

Kot lahko vidite, podatke potegnemo z curl in nato odvzamemo funkcijski klic, ki je ovit okoli podatkov json. Potem je le stvar uporabe json_decode za pretvorbo podatkov json v php matriko. Voila! Končano. Do zdaj sem imel približno 3000 URL-jev in podatki so se vrnili brez problema. Na trenutke je bilo nekoliko počasi, ne vem, ali po zasnovi ali po. Podatke še vedno vleče in shranjuje. Prepričan sem, da bo v nekem trenutku kakšna omejitev hitrosti, vendar doslej še nisem naletel na nobene stene. Mogoče se to sploh ne skriva pred programerji, toda kolikor vem, uradne podpore ni, če niste eden redkih založnikov, s katerimi so se odločili sodelovati.

Pridobitev števila zatičev pinterest v php