Anonim

Keďže opakovane určil dátum a následne sa nepodarilo uvoľniť ich API, rozhodol som sa vziať záležitosť do vlastných rúk. Upozorňujeme, že to nie je ideálny spôsob, ako robiť veci, ale zatiaľ to funguje. Chcel som vytvoriť sociálny graf našich najobľúbenejších stránok, aby sme vedeli, aký druh fotografií a obsahu rezonuje s našimi divákmi, tak som prišiel so skriptom nižšie a potom som prešiel cez každú adresu URL v našej databáze a získal som údaje, ktoré som potrebné.

Vrtal som sa do prvku iframe, ktorý bol vytvorený pomocou popisku tlačidla a prišiel s touto adresou URL:
http: //pinit-cdn..com/pinit.html url = http: //www.allrecipes.com
Bolo to ľahké, číslo sa zobrazuje priamo v jeho vlastnom div id CountBubble. Takže som to skrútil a na analýzu som použil php knižnicu simple_html_dom. Stále sa však vracala 0. Och! Toto číslo sa po načítaní stránky zmení pomocou javascriptu. Mal by si prezerať zdroj namiesto kontroly prvku. Takže namiesto toho si prezerám zdroj a je tu pekný kúsok kódu, ktorý tam len sedí pre moje programovacie potešenie.

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

Z toho zhromaždím nasledujúcu webovú adresu, ktorá pravdepodobne získa potrebné údaje,
http: //api..com/v1/urls/count.json callback = receiveCount & url = http: //www.allrecipes.com
ktorá zobrazuje:

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

Takže jeho údaje json zabalené do volania funkcie z rozhrania API, ktoré zatiaľ neuverejnili. Ako pohodlné. Nižšie je uvedený kúsok kódu, ktorý potrebujete, aby táto práca fungovala v PHP. Na svojom serveri musíte mať povolenú funkciu CURL.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = recipientCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // získajte html pomocou funkcie, ktorá volá cURL $ html = str_replace ("recipientCount (", "", $ html); //) odstráňte volanie funkcie, dáta sú zabalené do $ html = subst ($ html, "", -1); $ = json_decode ($ html); // prevádza sa z json na pole php $ pincount = $ -> count; echo $ pincount; // existuje číselná funkcia 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 $ ch; ;}

Ako vidíte, údaje natiahneme zvlnením a potom vytiahneme hovor funkcie, ktorý je omotaný okolo údajov json. Potom je to len otázka použitia json_decode na premenu json dát na php pole. Voila! Všetko hotové. Doposiaľ som spustil okolo 3 000 adries URL a údaje nevrátili žiadny problém. Občas to bolo trochu pomalé, nie ste si istí, či už zámerne alebo podľa. Je to stále ťahanie a ukladanie dát, ako som typ tohto. Som si istý, že v určitom okamihu dôjde k nejakému obmedzeniu rýchlosti, ale doteraz som sa nestretol so žiadnymi stenami. Možno by sa to ani nemalo skrývať pred programátormi, ale pokiaľ viem, neexistuje žiadna oficiálna podpora, pokiaľ nie ste jedným z mála vydavateľov, s ktorými sa rozhodli pracovať.

Získanie počtu pinov záujmu