Anonim

Mivel többször megadott egy dátumot, majd később nem bocsátotta ki API-t, úgy döntöttem, hogy az ügyet a kezembe veszem. Felhívjuk figyelmét, hogy ez nem ideális módszer a dolgok elvégzésére, de egyelőre működik. Összeállítani akartam a legnépszerűbb oldalak társadalmi grafikonját, hogy megtudjuk, milyen képek és tartalmak rezonálnak a nézőinkkel, ezért előálltam az alábbi szkripttel, majd átnéztem az adatbázisunk minden URL-jét, és megkaptam az adatokat szükség.

Fúrottam bele az iframe keretbe, amelyet egy gomb felirattal hoztak létre, és felhoztam ezt az URL-t:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
Nos, ez könnyű volt, a szám ott van a saját div id azonosítójában, a CountBubble-ban. Szóval göndörítettem, és az simple_html_dom php könyvtárat használtam fel az elemzéshez. Ennek ellenére 0 maradt. Hoppá! Az oldal betöltése után a szám javascript-tel megváltozik. Az elem ellenőrzése helyett a forrást kellett volna megnéznie. Szóval inkább a forrást nézem, és ott van ez a szép kóddarab, csak ülve, a programozási örömömre.

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

Ebből összegyűjtöm a következő URL-t, amely valószínűleg összehozza a szükséges adatokat,
http: //api..com/v1/urls/count.json? visszahívási = receiveCount & url = http: //www.allrecipes.com
amely megjeleníti:

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

Tehát a json adatait az API-ból származó függvényhívásba csomagolják, amelyeket még nem tettek közzé. Milyen kényelmes. Az alábbiakban található egy kis kód, amely ahhoz szükséges, hogy ez a munka PHP-ben működjön. A kiszolgálón engedélyeznie kell a cURL-t.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = ReceiveCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // szerezze be a html-t egy olyan funkción keresztül, amely meghívja a cURL $ html = str_replace ("ReceiveCount (", "", $ html)); // eltávolítja a függvényhívást, az adatok $ html = substr ($ html, "" be vannak csomagolva), -1); $ = json_decode ($ html); // konvertálás json formátumból php tömbbe $ pincount = $ -> count; echo $ pincount; // ott van a pull_html ($ url) számfunkció ($ ur) {$ ch = curl_init () ; curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_CONNECTTIMEOUT, 10); $ html = curl $ html = curl_exec ($ ch); ;}

Mint láthatja, az adatokat göndörítéssel húzzuk, majd szétválasztjuk a json adatok köré kapcsolt függvényhívást. Akkor csak a json_decode használatával kell a json adatokat php tömbvé alakítani. Voálá! Minden kész. Eddig mintegy 3000 URL-t futtattam, és az adatok nem jelentettek problémát. Időnként kissé lassú volt, nem tudom, tervezik-e vagy sem. Még mindig behúzza és tárolja az adatokat, amint ezt írom. Biztos vagyok benne, hogy egy bizonyos ponton lesz valamilyen sebességkorlátozás, de eddig még nem fújtam be a falakat. Lehet, hogy ezt nem is szabad elrejteni a programozóktól, de amennyire tudom, nincs hivatalos támogatás, hacsak nem azon kevés kiadók egyike vagy, akikkel együtt dolgoztak.

Számú pinterest-elem beszerzése a php-be