Предлагаю написать простейший парсер (программу, которая будет извлекать контент с удаленного сайта и выводить на нашей странице). В качестве “жертвы” выберем [Ссылки могут видеть только зарегистрированные пользователи. ] – нас интересует блок новостей “Главные новости” – от заголовка до разделительной линии (элемент <hr>). Заходим на сайт и анализируем HTML-код. Находим в нем уникальные строки, по которым мы определим – ОТ какого участка кода и ДО какого мы будем отбирать нужный нам контент.
Находим в коде такой текст: “<h2>Главные новости</h2>” – пусть это будет начало блока… и текст “<hr>” (тег разделительной линии), которым наш новостной блок заканчивается…
Итак, сформулируем нашу задачу:
Нам необходимо: получить содержимое (текст) страницы, находящейся по адресу “[Ссылки могут видеть только зарегистрированные пользователи. ], затем “отрезать” от полученного текста все, что находится ДО текста “<h2>Главные новости</h2>“, и все, что находится ПОСЛЕ текста “<hr>”. Полученный текст вывести в браузер.
Приступаем к выполнению…
PHP код:
<?php /* получаем содержимое нужной нам страницы в переменную $content (обратите внимание, – мы используем для этого функцию file_get_contents. Она может работать с удаленными URL только если в настройках PHP установлена опция allow_url_fopen) */ $content = file_get_contents(‘http://news.yandex.ru/’);
// Определяем позицию строки, до которой нужно все отрезать (используем функцию strpos()). $pos = strpos($content, ‘<h2>Главные новости</h2>’);
/*Отрезаем все, что идет до нужной нам позиции (функция substr в данном случае принимает два параметра: строка для обработки и //номер позиции. Функция вернет строку, НАЧИНАЯ с указанной позиции) */ $content = substr($content, $pos);
// Точно таким же образом находим позицию второй строки $pos = strpos($content, ‘<hr>’);
// Отрезаем нужное количество символов от нулевого $content = substr($content, 0, $pos);
// выводим полученную строку. echo $content; ?>
Однако, давайте посмотрим на ссылки… Как видно, в исходном коде применяются относительные ссылки, следовательно, работать они у нас не будут… Давайте исправим положение. Нам необходимо после каждого “href=” добавить URL Яndexа. Тоесть нужно найти “href=” и заменить на ‘href=”[Ссылки могут видеть только зарегистрированные пользователи. ]. Для этого воспользуемся функцией замены строк: str_replace(). Функция принимает три обязательных параметра: “что найти“, “чем заменить“, и в какой исходной строке.
Добавим в наш скрипт перед выводом (то-есть перед командой “echo”) такой код:
Итак, мы написали простейший ПАРСЕР (скрипт “граббинга” контента). Давайте еще раз посмотрим, какие PHP функции были задействованы в коде:
* [Ссылки могут видеть только зарегистрированные пользователи. ] – Получить содержимое файла в виде одной строки
* [Ссылки могут видеть только зарегистрированные пользователи. ] – Возвращает позицию первого вхождения подстроки
* [Ссылки могут видеть только зарегистрированные пользователи. ] – возвращает подстроку строки string длиной length , начинающегося с start символа по счету.
* [Ссылки могут видеть только зарегистрированные пользователи. ] – Заменяет строку поиска на строку замены
Можете написать парсер для какого либо новостного сайта сами…
__________________________________________________ _______________
Парсер картинок yandex.
В ходе этого урока мы научимся писать систему парсинга картинок.
Очень удобная система,- может пригодится, если сайт должен содержать множество картинок, а ни сила ни время не позволяет добавить их вручную. Например, такую систему можно использовать для Интернет магазинов, при отображении картинок позиций.
Пример такой системы можно наблюдать на сайте – zvuc.info
Для начала обработаем параметр GET, запишем его в переменную и заменим все пробелы на знак “+”:
PHP код:
$q=$_GET['q']; $q=str_replace(” “,”+”,$q);
Теперь достанем весь контент из запрошенной страницы yandex:
[Ссылки могут видеть только зарегистрированные пользователи. ] — Заменяет строку поиска на строку замены
[Ссылки могут видеть только зарегистрированные пользователи. ] — Получить содержимое файла в виде одной строки
[Ссылки могут видеть только зарегистрированные пользователи. ] — Разбивает строку на подстроки
[Ссылки могут видеть только зарегистрированные пользователи. ] — Возвращает подстроку
[Ссылки могут видеть только зарегистрированные пользователи. ] — Возвращает позицию первого вхождения подстроки
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось byearab; 04.03.2011 в 20:10.