Mendapatkan Jumlah Pin Pinterest di PHP

Karena pinterest telah berulang kali memberikan tanggal dan kemudian gagal untuk melepaskan API mereka, saya memutuskan untuk membawa masalah ini ke tangan saya sendiri. Harap dicatat bahwa ini bukan cara ideal untuk melakukan sesuatu, tetapi, untuk saat ini berfungsi. Saya ingin membuat grafik sosial dari halaman kami yang paling populer sehingga kami dapat mengetahui jenis foto dan konten apa yang beresonansi dengan pemirsa kami, jadi saya membuat skrip di bawah ini dan kemudian mengulang melalui setiap URL di basis data kami dan mendapatkan data saya dibutuhkan.

Saya mengebor ke dalam iframe yang dibuat oleh keterangan tombol pinterest dan muncul dengan url ini:
http://pinit-cdn.pinterest.com/pinit.html?url=http://www.allrecipes.com
Nah itu mudah, nomor itu ditampilkan di sana di ID-nya sendiri, CountBubble. Jadi saya meringkasnya, dan menggunakan pustaka php sederhana_html_dom untuk mengurai. Itu terus mengembalikan 0 sekalipun. Ups! Angka itu diubah dengan javascript setelah halaman dimuat. Seharusnya melihat sumber daripada memeriksa elemen. Jadi saya melihat sumber sebagai gantinya dan ada potongan kode yang bagus ini hanya duduk di sana untuk kesenangan pemrograman saya.

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

Dari situ, saya mengumpulkan URL berikut mungkin akan menarik data yang saya butuhkan,
http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url=http://www.allrecipes.com
yang menampilkan:

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

Jadi, data json yang dibungkus dalam pemanggilan fungsi dari API yang belum dirilis secara publik. Alangkah nyaman. Di bawah ini adalah sedikit kode yang Anda butuhkan untuk membuat ini bekerja di PHP. Anda harus mengaktifkan cURL di server Anda.

 $ pinurl = "http://api.pinterest.com/v1/urls/count.json?callback=receiveCount&url="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // dapatkan html melalui fungsi yang memanggil cURL $ html = str_replace ("receiveCount (", "", $ html); // hapus fungsi panggil data dibungkus dalam $ html = substr ($ html, "", -1); $ pinterest = json_decode ($ html); // mengkonversi dari json ke php array $ pincount = $ pinterest-> count; echo $ pincount; // ada fungsi angka 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 ($ ch); return $ html;} 

Seperti yang Anda lihat, kami menarik data dengan ikal lalu menghapus panggilan fungsi yang melilit data json. Maka itu hanya masalah menggunakan json_decode untuk mengubah data json menjadi array php. Voila! Semua selesai. Saya telah menjalankan sekitar 3.000 URL sejauh ini dan datanya telah kembali tanpa masalah. Itu sedikit lambat di kali, tidak yakin apakah dengan desain atau oleh. Masih menarik dan menyimpan data saat saya mengetik ini. Saya yakin pada suatu titik akan ada semacam pembatasan tingkat, tetapi saya belum mencapai dinding sejauh ini. Mungkin ini bahkan tidak seharusnya disembunyikan dari programer, tetapi sejauh yang saya tahu, tidak ada dukungan resmi kecuali Anda adalah salah satu dari beberapa penerbit yang mereka pilih untuk diajak bekerja sama.

Lihat Juga