Anonim

Оскільки неодноразово давали дату, а згодом не вдалося випустити їх API, я вирішив взяти цю справу в свої руки. Зверніть увагу, що це не ідеальний спосіб робити речі, але, на даний момент, це працює. Я хотів створити соціальний графік наших найпопулярніших сторінок, щоб ми могли знати, які фотографії та контент резонує у наших глядачів, тому я придумав сценарій нижче, а потім переглянув кожну URL-адресу в нашій базі даних і отримав дані I потрібні.

Я переглянув фрагмент iframe, створений викликом кнопки, і придумав цей URL:
http: //pinit-cdn..com/pinit.html? url = http: //www.allrecipes.com
Добре, що це було просто, номер відображається прямо там у власному ідентифікаторі CountBubble. Тому я згорнув його і використав php-бібліотеку simple_html_dom для розбору. Він продовжував повертати 0, хоча. Ого! Це число змінюється за допомогою javascript після завантаження сторінки. Повинен був переглянути джерело замість того, щоб перевірити елемент. Тож я переглядаю джерело замість цього, і ось цей приємний фрагмент коду просто сидить там для мого задоволення від програмування.

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

З цього моменту я збираю наступну URL-адресу, ймовірно, отримаю потрібні мені дані
http: //api..com/v1/urls/count.json? callback = acceptCount & url = http: //www.allrecipes.com
який відображає:

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

Отже, його дані json, зафіксовані у виклику функції з API, вони ще не оприлюднили. Як зручно. Нижче наведено трохи коду, який вам потрібен, щоб зробити цю роботу в PHP. У вас повинен бути включений cURL на вашому сервері.

$ pinurl = "http: //api..com/v1/urls/count.json? callback = acceptCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // отримати html через функцію, яка викликає cURL $ html = str_replace ("acceptCount (", "", $ html); // видалити виклик функції дані загортаються у $ html = substr ($ html, "", -1); $ = json_decode ($ html); // перетворити з json в php масив $ pincount = $ -> count; echo $ pincount; // є функція числення 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) $ ch); ;}

Як бачимо, ми витягуємо дані з завитками, після чого знімаємо виклик функції, який обернуто навколо даних json. Тоді лише питання використання json_decode для перетворення даних json у масив php. Вуаля! Все зроблено. Наразі я пробіг близько 3000 URL-адрес, і дані не повернулися. Часом це було трохи повільно, не впевнений, чи дизайн, чи автор. Її все одно витягують і зберігають дані, коли я це вводя. Я впевнений, що в якийсь момент буде якесь обмеження швидкості, але я поки що не біг у жодні стіни. Можливо, це навіть не приховується від програмістів, але, наскільки я знаю, офіційної підтримки немає, якщо ви не один з небагатьох видавців, з якими вони вирішили працювати.

Отримання кількості шпильок для pinterest у php