Так как неоднократно давал дату, а затем впоследствии не выпускал их API, я решил взять дело в свои руки. Обратите внимание, что это не идеальный способ сделать что-то, но пока он работает. Я хотел построить социальный график наших самых популярных страниц, чтобы мы могли знать, какие фотографии и контент находят отклик у наших зрителей, поэтому я придумал сценарий ниже, а затем просмотрел каждый URL в нашей базе данных и получил данные, которые я необходимо.
Я углубился в iframe, который был создан с помощью кнопки, и получил этот URL:
HTTP: //pinit-cdn..com/pinit.html URL = HTTP: //www.allrecipes.com
Ну, это было легко, число отображается прямо в его собственном div id 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 обратного вызова = receiveCount & URL = HTTP: //www.allrecipes.com
который отображает:
receiveCount ({"count": 1148, "url": "http://www.allrecipes.com"})
Итак, его данные json обернуты в вызов функции из API, который они еще не опубликовали публично. Как удобно Ниже приведен фрагмент кода, который необходим для работы на PHP. На вашем сервере должен быть включен cURL.
$ pinurl = "http: //api..com/v1/urls/count.json? callback = receiveCount & url ="; $ targeturl = "http://www.allrecipes.com/"; $ pinurl. = $ brandurl; $ html = pull_html ($ pinurl); // получаем html через функцию, которая вызывает cURL $ html = str_replace ("receiveCount (", "", $ 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; возврат chlose ($) ;}
Как вы можете видеть, мы извлекаем данные с помощью curl, а затем удаляем вызов функции, обернутый вокруг данных json. Тогда нужно просто использовать json_decode, чтобы превратить данные json в массив php. Вуаля! Все сделано. На данный момент я запустил около 3000 URL-адресов, и данные вернулись без проблем. Время от времени это было немного медленно, не уверен, что это было задумано или разработано. Это все еще тянет и хранит данные, поскольку я печатаю это. Я уверен, что в какой-то момент будет какое-то ограничение скорости, но я до сих пор не сталкивался ни с какими стенами. Возможно, это даже не предполагается скрывать от программистов, но, насколько я знаю, официальной поддержки нет, если только вы не один из немногих издателей, с которыми они решили работать.
