Anonim

Sejak telah berulang kali memberikan tarikh dan kemudian gagal untuk melepaskan API mereka, saya memutuskan untuk mengambil perkara itu ke tangan saya sendiri. Sila ambil perhatian bahawa ini bukan cara yang ideal untuk melakukan sesuatu, tetapi, buat masa ini ia berfungsi. Saya mahu membina graf sosial laman web yang paling popular supaya kami dapat mengetahui jenis gambar dan kandungan yang bergema dengan penonton kami, jadi saya datang dengan skrip di bawah dan kemudian melengkung melalui setiap URL dalam pangkalan data kami dan mendapat data saya diperlukan.

Saya dibor ke dalam iframe yang dicipta oleh petak butang dan muncul dengan url ini:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
Nah itu mudah, nombor itu dipaparkan di sana di CountBubble id div sendiri. Jadi saya curl'ed itu, dan menggunakan pustaka php simple_html_dom untuk digunakan. Ia terus kembali 0 walaupun. Whoops! Nombor itu ditukar dengan javascript selepas halaman dimuatkan. Harus dilihat sumber bukannya memeriksa elemen tersebut. Oleh itu, saya melihat sumber itu dan terdapat sekeping kod yang bagus untuk duduk di sana untuk keseronokan pengaturanku.

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

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

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

Oleh itu, data jsonnya dibungkus dalam panggilan fungsi dari API yang belum dibebaskan secara terbuka. Betapa mudahnya. Berikut adalah sedikit kod yang anda perlukan untuk membuat kerja ini dalam PHP. Anda mestilah mempunyai kURL diaktifkan pada pelayan anda.

$ pinurl = "http: //api..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); // keluarkan fungsi panggilan data yang dibungkus dalam $ html = substr ($ html, "" -1); $ = json_decode ($ html); // dikonversi dari json ke array php $ pincount = $ -> count; echo $ pincount; // ada fungsi nombor 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 ;}

Seperti yang anda dapat lihat, kami tarik data dengan curl kemudian hapus panggilan fungsi yang dibalut data json. Kemudian ia hanya menggunakan json_decode untuk menjadikan data json menjadi array php. Voila! Semua dilakukan. Saya telah menjalankan sekitar 3, 000 URL setakat ini dan data tidak dikembalikan. Ia agak lambat pada masa-masa, tidak pasti sama ada dengan reka bentuk atau oleh. Ia masih menarik dan menyimpan data semasa saya menaipnya. Saya pasti pada satu ketika akan ada beberapa jenis pembatasan kadar, tetapi saya tidak pernah masuk ke mana-mana dinding setakat ini. Mungkin ini tidak sepatutnya tersembunyi dari pengaturcara, tetapi sejauh yang saya tahu, tidak ada sokongan rasmi melainkan jika anda adalah salah seorang dari beberapa penerbit yang mereka pilih untuk bekerjasama.

Mendapatkan bilangan pin pinterest dalam php