Один из основных способов привлечь посетителей на сайт — почаще обновлять содержащуюся на нем информацию. Заниматься этим совсем не просто и отбирает такое занятие слишком много времени, хотя, безусловно, и вознаграждается. В этой статье мы попытаемся запрограммировать этот процесс и сделать смену информации на сайте динамической. Было бы неплохо иметь самые свежие новости с 3DNews, синхронно с сайтом mycomp.com.ua показывать у себя содержание свежего МК, да и вообще иметь у себя на сайте всю свежатину, которую вы только захотите. Реализовывать все это мы будем на уже знакомом вам PHP.
Получаем содержание свежего МК
Принцип работы нашего сценария будет следующим: сначала скачивается полностью весь HTML-код на странице, после чего определяется нужный участок, и скрипт выводит его на нашей странице. Для скачивания полного содержимого страницы используется функция file_get_contents(). Она принимает в качестве аргумента адрес страницы для скачивания и возвращает полный код указанной страницы. То есть, если мы напишем такой код:
$www = file_get_contents(‘http://mycomp.com.ua’);
echo $www;
То получим полную копию сайта mycomp.com.ua, только следует учитывать, что если, к примеру, стоит тэг для вывода рисунка с неполным адресом, вида <img src="1.jpg">, то он, естественно, отображаться не будет, так как поиск рисунка будет вестись по каталогу, где размещен скрипт, который скачивает страницу. Для полного отображения рисунка следует использовать ссылку такого вида: <img src="http://mycomp.com.ua/1.jpg">. Для этого можно использовать функцию замены текста, примерно так:
$www = str_replace('<img src="','<img src="http://mycomp.com.ua/',$www);
То же самое происходит, если переделать ссылки, заменив относительный адрес на полный:
$www = str_replace('<a href="','<a href="http://mycomp.com.ua/',$www);
Итак, наша цель — заполучить содержание свежего номера МК и без всяких хлопот производить обновление на своем сайте синхронно с МК :-). Для этого заходим на сайт МК и находим содержание номера. Следует запомнить адрес, по какому оно находится, так как нам придется передавать его функции для скачивания страницы. Адрес имеет такой вид: http://mycomp.com.ua/issuetoc/.
Но на странице помимо содержания есть еще много всякой информации, которая нам вовсе не нужна. Значит, надо как-то отсеять лишнее, выделив только то, что нам нужно. Для этого открываем исходный код страницы. Нам повезло — мы имеем дело с аккуратно оформленным кодом, разделенным комментариями, все просто и понятно. Это намного упрощает задачу, более того, фактически сводит ее к нулю :-). Находим комментарий <!-- ARTICLES --> — это начало, с этого места мы начинаем брать полезную информацию, с обложкой нового номера и списком статей. Конец этого всего тоже долго не пришлось искать, так как комментарий вполне красноречив: <!-- END ARTICLES -->.
Значит, теперь все, что нам остается сделать — это вывести всю информацию, которая находится между этими двумя комментариями. Код сценария:
<?php
$www2 = file_get_contents('http://mycomp.com.ua/issuetoc/'); //скачивание страницы
$begin = strpos($www2,'<!-- ARTICLES -->'); //находим начало
$endl = strpos($www2,'<!-- END ARTICLES -->'); // находим конец
//вывод в цикле всей полезной информации
for($i=$begin;$i<$endl;$i++)
echo $www2[$i];
?>
Все работает отлично, только есть небольшая проблема: функция file_get_contents(), основная в этом сценарии, работает только в PHP версии 4.3 и выше. Явно возникнут трудности при загрузке на какой-то старенький сервер, на котором по той простой причине, что все работает нормально, давно уже не обновляли ПО. Но незаменимых функций нет, и мы напишем собственный код для скачивания страницы с других сайтов, который будет работать на любых версиях PHP. Итак, перепишем существующий код таким образом:
<?php
$www2 = @file("'http://mycomp.com.ua/issuetoc/");
$www = '';
for($j=0;$j<count($www2);$j++)
$www .= $www2[$j];
$begin = strpos($www, '<!-- ARTICLES -->');
$endl = strpos($www, '<!-- END ARTICLES -->');
for($i=$begin;$i<$endl;$i++)
echo $www[$i];
?>
Почти ничего не изменилось, только теперь скачивание страницы производится с помощью функции file(), которая создает массив, элементами которого являются строки страницы. Далее весь массив складывается в одну строку, на2д которой мы проводим уже знакомые нам действия.
Самая свежая новость с 3DNews
По адресу www.3dnews.ru/news/ мы найдем массу интересных новостей, обновляются они чуть ли не каждый час. Все новости нам не нужны, это слишком громоздко, но мы можем брать самую последнюю из отображенных на сайте. Для этого проделываем уже освоенную процедуру: заходим на страницу, открываем и читаем ее исходный код. К сожалению, тут все более запутано, чем на сайте МК. Находим первый заголовок новости и смотрим, чем он уникален, определяя по ходу, какая информация будет всегда оставаться статической, несмотря на то, что все новости разные по размерам и могут иметь картинки или ссылки или разных авторов. Пожалуй, нашим выбором будет форматирование самого заголовка — вот характерный код, с которого начнется вывод: <h1 class="title_news">. Окончание новости всегда заканчивается строкой Тематические ссылки или Тематические статьи. То есть, после каждой новости в любом случае найдется слово «Тематические» — именно эта строка и станет признаком окончания новости. Все, теперь остается только внести небольшие изменения в наш скрипт, чтобы он заработал для вывода последней новости с 3DNews:
<?php
$www2 = @file("http://www.3dnews.ru/news/");
$www = '';
for($j=0;$j<count($www2);$j++)
$www .= $www2[$j];
$begin = strpos($www,'<h1 class="title_news">');
$endl = strpos($www,'Тематические ');
for($i=$begin;$i<$endl;$i++)
echo $www[$i];
?>
Все строки кода вам уже знакомы, изменена только информационная часть.
RSS
Как вариант, можно использовать технологию RSS (Really Simple Syndication) — формат обмена информацией в Web, которая позволяет сторонним сайтам использовать вашу информацию. С одной стороны, выгоды сайту от этого никакой нет, но для рекламы проекта вещь не лишняя. Таким образом можно с легкостью получать погоду, новости, курсы валют или любую другую подобную информацию. Для этого вам не потребуются навыки программирования, нужно просто разместить указанный участок кода в требуемом месте на сайте. Правда, придется смириться с основным минусом этого аксессуара — присутствием рекламы и нежелательных ссылок. Еще одно соображение в пользу разобранного в этой статье скрипта: для вас не будет проблемой, если сайт попросту не предоставляет возможность отображения информации своего сайта с помощью RSS, будь-то по причине незнания или нежелания вебмастера предоставлять подобный доступ. В то время как нашему сценарию не нужны никакие разрешения :-).
Information
- Posted on 27.04.2013 13:49
- Просмотры: 1188