Anonim

Art arda bir tarih verdiğinden ve ardından API'lerini bırakmadığından, konuyu kendi elime almaya karar verdim. Lütfen bunun bir şeyler yapmanın ideal yolu olmadığını unutmayın, ancak şimdilik işe yarıyor. En popüler sayfalarımızın sosyal bir grafiğini oluşturmak istedim, böylece izleyicilerimizle ne tür fotoğraf ve içeriklerin yankı çektiğini öğrenebildik, bu yüzden aşağıdaki senaryoyu okudum ve veri tabanımızdaki her URL’yi dolandırdım ve verileri aldım. gerekli.

Bir düğme belirtme çizgisi tarafından oluşturulan iframe'yi delip bu URL'yi buldum:
http: //pinit-cdn..com/pinit.html url = http:? //www.allrecipes.com
Eh, bu kolaydı, sayı orada kendi div kimliği CountBubble içinde görüntülenir. Böylece onu kıvırdım ve ayrıştırmak için simple_html_dom php kütüphanesini kullandım. Yine de 0 döndürmeye devam etti. Tüh! Sayfa yüklendikten sonra bu sayı javascript ile değiştirilir. Öğeyi incelemek yerine kaynağı görmeliydin. Bu yüzden kaynağı görüyorum ve programlama zevkim için orada oturan güzel bir kod parçası var.

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

Bundan, aşağıdaki URL'yi topladım, muhtemelen ihtiyacım olan verileri alacağım,
http: //api..com/v1/urls/count.json geri arama = receiveCount & url = http: //www.allrecipes.com
hangi görüntüler:

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

Bu nedenle, json verileri henüz halka açıklanmayan API'den bir işlev çağrısına sarıldı. Ne kadar uygun. Aşağıda PHP'de bu işi yapmak için ihtiyacınız olan kod biraz. Sunucunuzda cURL etkin olmalıdır.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = receivount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // html'yi cURL $ html = str_replace ("receCount (", "", $ html) çağıran bir işlevden geçirin; // $ html = substr ($ html, "", -1); $ = json_decode ($ html); // json'dan php dizisine dönüştürün $ pincount = $ -> count; echo $ pincount; ; curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ cht, CURLOPT_CONNECTTIMEOUT, 10); $ html = curl_ex $ chl; ;}

Gördüğünüz gibi, verileri kıvrımlı olarak çekip sonra json verilerinin etrafına sarılmış işlev çağrısını çıkarırız. O zaman json verisini bir php dizisine çevirmek için json_decode kullanmak sadece bir meseledir. İşte bu kadar! Hepsi tamam. Şimdiye kadar yaklaşık 3.000 URL yayınladım ve veriler hiç sorun döndürmedi. Zaman zaman biraz yavaştı, tasarımdan mı yoksa tarafından mı emin değildi. Bunu yazarken verileri hala çekiyor ve saklıyor. Bir noktada bazı oranların sınırlandırılacağından eminim, ancak şu ana kadar herhangi bir duvara rastlamadım. Belki de bunun programcılardan gizlenmesi gerekmiyor, ama bildiğim kadarıyla birlikte çalışmayı seçtikleri yayıncılardan biri olmadığınız sürece resmi bir destek yok.

Php cinsinden ilginç pin sayısını alma