Vzhledem k tomu, že jsem opakovaně zadal datum a poté se nepodařilo uvolnit API, rozhodl jsem se vzít tuto záležitost do svých rukou. Vezměte prosím na vědomí, že to není ideální způsob, jak dělat věci, ale prozatím to funguje. Chtěl jsem vytvořit sociální graf našich nejoblíbenějších stránek, abychom mohli vědět, jaký druh fotografií a obsahu rezonuje s našimi diváky, takže jsem přišel s níže uvedeným skriptem a pak jsem prošel každou URL v naší databázi a získal jsem data potřeboval.
Vrtal jsem se do prvku iframe vytvořeného pomocí tlačítka s popiskem a přišel s touto adresou URL:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
Bylo to snadné, číslo se zobrazuje přímo v jeho vlastním div id CountBubble. Takže jsem to zvlnil a použil jsem k analýze parp knihovnu simple_html_dom php. Přesto se vrací 0. Jejda! Toto číslo se po načtení stránky změní pomocí javascriptu. Měl si prohlédnout zdroj místo kontroly prvku. Takže si místo toho prohlížím zdroj a tam je tady ten hezký kousek kódu, který tam jen sedí pro mé programové potěšení.
snode.setAttribute ('src', '//api..com/v1/urls/count.json?callback=receiveCount&url='+targetUrl);
Z toho shromáždím následující adresu URL, která pravděpodobně vytáhne potřebná data,
http: //api..com/v1/urls/count.json? callback = recipientCount & url = http: //www.allrecipes.com
který zobrazuje:
recipientCount ({"count": 1148, "url": "http://www.allrecipes.com"})
Takže jeho json data zabalená do volání funkce z API, které ještě nebyly zveřejněny. Jak pohodlné. Níže je kousek kódu, který potřebujete, aby tato práce fungovala v PHP. Musíte mít na svém serveru povoleno CURL.
$ pinurl = "http: //api..com/v1/urls/count.json? callback = recipientCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // získejte html pomocí funkce, která volá CURL $ html = str_replace ("recipientCount (", "", $ html); // odebrat volání funkce, data jsou zabalena do $ html = subst ($ html, "", -1); $ = json_decode ($ html); // převést z json na pole php $ pincount = $ -> count; echo $ pincount; // existuje číslo funkce 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; ;}
Jak vidíte, vytáhneme data s kudrlinkou a pak vytažíme volání funkce, které je omotáno kolem dat json. Pak je to jen otázka použití json_decode pro přeměnu dat json na pole php. Voila! Vše hotovo. Doposud jsem běžel kolem 3 000 adres URL a data nevrátila žádný problém. Občas to bylo trochu pomalé, nejisté, zda záměrně nebo podle. Je to stále tahání a ukládání dat, jak jsem typ tohoto. Jsem si jistý, že v určitém okamžiku dojde k určitému omezení rychlosti, ale zatím jsem se nedostal do žádných zdí. Možná to ani nemá být skryto před programátory, ale pokud vím, neexistuje žádná oficiální podpora, pokud nejste jedním z mála vydavatelů, se kterými se rozhodli pracovat.
