Anonim

Kako sam u više navrata dao datum, a potom nakon toga nisam uspio izdati njihov API, odlučio sam uzeti stvar u svoje ruke. Imajte na umu da ovo nije idealan način za obavljanje stvari, ali, za sada to djeluje. Htio sam napraviti socijalni graf naših najpopularnijih stranica kako bismo znali kakve fotografije i sadržaj odjekuje kod naših gledatelja, pa sam smislio skriptu u nastavku, a zatim pregledao svaki URL u našoj bazi podataka i dobio podatke I potreban.

Probušio sam se u iframeu koji je kreiran u oblačiću gumba i došao do ovog URL-a:
http: //pinit-cdn..com/pinit.html url = http: //www.allrecipes.com
Pa, to je bilo lako, broj je prikazan tamo u vlastitom div id CountBubbleu. Tako sam je skrenuo i upotrijebio php knjižnicu simple_html_dom za raščlanjivanje. Ipak, zadržao je povratak 0. Joj! Taj se broj mijenja s JavaScriptom nakon učitavanja stranice. Trebao je pregledati izvor umjesto da provjeri element. Dakle, umjesto toga gledam izvor i tu sam lijep komad koda koji samo sjedim tamo zbog mog zadovoljstva u programiranju.

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

Na osnovu toga, prikupljam sljedeći URL vjerojatno će izvući potrebne podatke,
http: //api..com/v1/urls/count.json povratni poziv = receiveCount & url = http: //www.allrecipes.com
koji prikazuje:

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

Dakle, njegovi json podaci umotani u funkcijski poziv iz API-ja koji još nisu javno objavili. Kako prikladno. Ispod je malo koda koji vam je potreban da biste ovo postigli u PHP-u. Na svom poslužitelju morate imati omogućen cURL.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = acceptCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // dobiti html kroz funkciju koja poziva cURL $ html = str_replace ("primaCount (", "", $ html); // ukloni poziv funkcije podaci su zamotani u $ html = substr ($ html, "", -1); $ = json_decode ($ html); // pretvoriti iz json u php niz $ pincount = $ -> count; echo $ pincount; // tu je brojčana 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 (ch); ;}

Kao što vidite, podatke izvijamo s uvijanjem, a zatim uklanjamo poziv funkcije koji je omotan oko json podataka. Tada je samo pitanje korištenja json_decode za pretvaranje json podataka u php niz. Voila! Sve gotovo. Do sada sam imao oko 3000 URL-ova i podaci su vraćeni bez problema. Ponekad je bilo malo sporo, nije sigurno je li dizajnirano ili prema. Još uvijek povlači i pohranjuje podatke dok ovo unosim. Sigurna sam da će u nekom trenutku postojati neka vrsta ograničavanja stope, ali do sada nisam naletio na bilo koji zid. Možda ovo uopće ne bi trebalo biti skriveno od programera, ali koliko ja znam, službene podrške nema, osim ako niste jedan od rijetkih izdavača s kojim su odlučili raditi.

Dobivanje broja pinterest pinova u php-u