Pinterest tekrar tekrar bir tarih verdiğinden ve daha sonra onların API'sini serbest bırakmadığından, konuyu kendi ellerime almaya karar verdim. Lütfen bunun bir şeyler yapmak için ideal bir yol olmadığını unutmayın, ama şimdilik işe yarıyor. En popüler sayfalarımızın bir sosyal grafiğini oluşturmak istedim, böylece hangi fotoğrafların ve içeriğin görüntüleyenlerimizle rezonansa girdiğini görebildik, bu yüzden aşağıdaki senaryodan geldim ve daha sonra veritabanımızdaki her bir URL ile bağlantıya geçtim ve verileri aldım. gerekli.
Bir pinterest düğmesi belirtme çizgisi tarafından oluşturulan iframe aşağı doğru delinmiş ve bu URL ile geldi:
http://pinit-cdn.pinterest.com/pinit.html?url=http://www.allrecipes.com
Peki bu kolaydı, sayı, kendi div kimliği CountBubble'da orada görüntülenir. Bu yüzden onu kıstım ve ayrıştırmak için simple_html_dom php kütüphanesini kullandım. Yine de geri dönmeye devam etti. Tüh! Bu sayı, sayfa yüklendikten sonra javascript ile değiştirilir. Eleman incelenmek yerine kaynağı görmeliydim. Bu yüzden kaynağı görüyorum ve programlama zevkim için orada oturan bu güzel kod parçası var.
snode.setAttribute ('src', '//api.pinterest.com/v1/urls/count.json?callback=receiveCount&url='+targetUrl);
Bundan sonra, aşağıdaki URL'yi topladım, muhtemelen ihtiyacım olan verileri çekecek.
http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url=http://www.allrecipes.com
hangi görüntüler:
receiveCount ({"count": 1148, "url": "http://www.allrecipes.com"})
Dolayısıyla, json verileri henüz kamuya açıklanmadıkları API'den bir işlev çağrısı yaptı. Ne kadar uygun. Aşağıda bu çalışmayı PHP'de yapmanız için gereken küçük kod. Sunucunuzda cURL etkin olmalıdır.
$ pinurl = "http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl = $ brandurl; $ html = pull_html ($ pinurl); // html'yi cURL $ html = str_replace ("getCount (", "", $ html)); // $ işlevini kaldırır. data çağırır. $ html = substr ($ html, ""; -1); $ pinterest = json_decode ($ html); // json'dan php dizisine dönüştürme $ pincount = $ pinterest-> sayım; echo $ pincount; // sayı işlevi var pull_html ($ url) {$ ch = curl_init curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); $ html;}
Görebildiğiniz gibi, verileri bukle ile çekip json verilerinin etrafına sarılmış işlev çağrısını çıkarıyoruz. Öyleyse json verilerini bir php dizisine dönüştürmek için json_decode kullanmanız yeterlidir. İşte bu kadar! Hepsi tamam. Şimdiye kadar yaklaşık 3.000 URL çalıştırdım ve veriler sorun yaratmadı. Zaman zaman tasarımda ya da tarafından olduğundan emin değilim. Bunu yazarken verileri hala çekiyor ve saklıyor. Eminim bir noktada hız sınırlaması olacak, ama şimdiye kadar hiç bir duvara girmedim. Belki de bu, programcılardan gizlenmemelidir, ancak bildiğim kadarıyla, çalışmayı seçtikleri birkaç yayıncıdan biri değilseniz, hiçbir resmi destek yoktur.