Anonim

Tā kā vairākkārt bija norādījis datumu un pēc tam neizdevās atbrīvot viņu API, es nolēmu pārņemt šo lietu savās rokās. Lūdzu, ņemiet vērā, ka tas nav ideāls veids, kā darīt lietas, bet pagaidām tas darbojas. Es gribēju izveidot mūsu populārāko lapu sociālo grafiku, lai mēs varētu zināt, kāda veida fotoattēli un saturs rezonē ar mūsu skatītājiem, tāpēc es nācu klajā ar zemāk esošo skriptu un pēc tam apskatīju katru URL mūsu datu bāzē un ieguvu datus, kurus es vajadzīgs.

Es iedziļinājos iframe, ko izveidoja ar pogas norādi, un nācu klajā ar šo URL:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
Tas bija vienkārši, numurs tiek parādīts turpat, div dividendes vienībā - CountBubble. Tāpēc es to čokuroju un izmantoju php bibliotēku simple_html_dom, lai parsētu. Tomēr tas turpināja atgriezties 0. Skau! Pēc lapas ielādes šis numurs tiek mainīts ar javascript. Būtu vajadzējis aplūkot avotu, nevis pārbaudīt elementu. Tāpēc es apskatu avotu, un tur ir šis jaukais koda gabals, kas tur vienkārši sēž manas programmēšanas prieka pēc.

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

Pēc tam es apkopoju šo URL, iespējams, iegūstot vajadzīgos datus,
http: //api..com/v1/urls/count.json? atzvanīšanas = saņemšanas skaits un URL = http: //www.allrecipes.com
kurā redzams:

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

Tātad, tā json dati tiek iesaiņoti funkcijas izsaukumā no API, ko viņi vēl nav publiskojuši. Cik ērti. Zemāk ir mazliet koda, kas jums nepieciešams, lai šis darbs darbotos PHP. Jūsu serverī jābūt iespējotai cURL.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = ReceiveCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // iegūstiet html, izmantojot funkciju, kas izsauc cURL $ html = str_replace ("ReceiveCount (" "", $ html); // noņemiet funkcijas izsaukumu, dati tiek ietīti $ html = substr ($ html, "", -1); $ = json_decode ($ html); // konvertēt no json uz php masīvu $ pincount = $ -> count; echo $ pincount; // tur ir numura 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_extc ($ ch); ;}

Kā redzat, mēs izvelkam datus ar čokurošanos un pēc tam noņemiet funkcijas izsaukumu, kas ir apvilkts ap jsona datiem. Tad atliek tikai izmantot json_decode, lai json datus pārvērstu php masīvā. Voila! Viss pabeigts. Līdz šim esmu pārvaldījis apmēram 3000 vietrāžus URL, un dati nav atgriezušies problēmu. Reizēm tas bija nedaudz lēns, nezināt, vai tas ir pēc dizaina, vai Tā joprojām ievelk un saglabā datus, ierakstot šo. Es esmu pārliecināts, ka kādā brīdī būs kaut kāds likmju ierobežojums, bet es līdz šim neesmu ieskrējies nevienā sienā. Varbūt to pat nav paredzēts slēpt no programmētājiem, taču, cik es zinu, oficiāla atbalsta nav, ja vien jūs neesat viens no nedaudzajiem izdevējiem, ar kuriem viņi ir izvēlējušies strādāt.

Iegūstiet intereses tapu skaitu php