Anonim

Eftersom upprepade gånger har gett ett datum och sedan inte lyckats släppa sin API, bestämde jag mig för att ta saken i mina egna händer. Observera att detta inte är det ideala sättet att göra saker på, men för tillfället fungerar det. Jag ville bygga en social graf av våra mest populära sidor så att vi kunde veta vilken typ av foton och innehåll som resonerar med våra tittare, så jag kom med skriptet nedan och slingade sedan igenom alla webbadresser i vår databas och fick uppgifterna jag behövs.

Jag borrade ner i iframe som skapades av en knapputrop och kom med den här url:
http: //pinit-cdn..com/pinit.html url = http:? //www.allrecipes.com
Det var väl enkelt, numret visas just där i sin egen div ID CountBubble. Så jag krullade det och använde php-biblioteket simple_html_dom för att analysera. Det fortsatte dock att returnera 0. Oj då! Det numret ändras med javascript efter att sidan laddats. Borde ha tittat på källan istället för att inspektera elementet. Så jag tittar på källan istället och det finns den här fina koden som bara sitter där för mitt programmeringsglädje.

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

Från det samlar jag in följande URL kommer förmodligen att dra de data jag behöver,
callback = receiveCount //api..com/v1/urls/count.json & url = http: http? //www.allrecipes.com
som visar:

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

Så, dess json-data inslagna i ett funktionssamtal från API: n har de inte släppt offentligt ännu. Så passande. Nedan är den lilla kod du behöver för att detta ska fungera i PHP. Du måste ha CURL aktiverat på din server.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = ontvangCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // få html via en funktion som kallar cURL $ html = str_replace ("mottagarkonto (", "", $ html); // ta bort funktionen. anropa data är inslagna i $ html = substr ($ html, "", -1); $ = json_decode ($ html); // konvertera från json till php array $ pincount = $ -> count; echo $ pincount; // där finns numerfunktionen 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 ($ cht) ;}

Som ni ser drar vi data med curl och raderar sedan funktionssamtalet som är lindat runt json-data. Sedan handlar det bara om att använda json_decode för att förvandla json-data till en php-grupp. Voila! Klart. Jag har kört cirka 3 000 webbadresser hittills och uppgifterna har inte returnerat några problem. Det var ibland lite långsamt, inte säker på om det var design eller av. Det är fortfarande att dra och lagra data när jag skriver det här. Jag är säker på att det någon gång kommer att finnas någon slags takbegränsning, men jag har inte stött på några väggar hittills. Kanske är det inte ens meningen att det ska döljas för programmerare, men så vitt jag vet finns det inget officiellt stöd om du inte är en av de få utgivarna de har valt att arbeta med.

Få antal pinterstift i php