[ Новые сообщения · Участники · Правила форума · Пошук · RSS ]
Страница 1 из 11
Модератор форума: sova77 
Форум » Общий раздел » все для сайта » Пишем простейший ПАРСЕР контента на PHP
Пишем простейший ПАРСЕР контента на PHP
sova77Дата: Вт, 25.05.2010, 09:49 | Сообщение # 1
вип
Группа: разработчик
Сообщений: 601
Награды: 13
Статус: відсутній
Предлагаю написать простейший парсер (программу, которая будет извлекать контент с удаленного сайта и выводить на нашей странице). В качестве “жертвы” выберем новости от yandex.ru – нас интересует блок новостей “Главные новости” – от заголовка до разделительной линии (элемент
Code
[hr]
). Заходим на сайт и анализируем HTML-код. Находим в нем уникальные строки, по которым мы определим – ОТ какого участка кода и ДО какого мы будем отбирать нужный нам контент.
Находим в коде такой текст:
Code
“<h2>Главные новости</h2>”
– пусть это будет начало блока… и текст
Code
“[hr]”
(тег разделительной линии), которым наш новостной блок заканчивается…
Итак, сформулируем нашу задачу:

Нам необходимо: получить содержимое (текст) страницы, находящейся по адресу “http://news.yandex.ru/”, затем “отрезать” от полученного текста все, что находится ДО текста

Code
“<h2>Главные новости</h2>“
, и все, что находится ПОСЛЕ текста
Code
“[hr]”
. Полученный текст вывести в браузер.
Приступаем к выполнению…

Добавлено (25.05.2010, 09:39)
---------------------------------------------
Доступно только для пользователей

Добавлено (25.05.2010, 09:42)
---------------------------------------------
Однако, давайте посмотрим на ссылки… Как видно, в исходном коде применяются относительные ссылки, следовательно, работать они у нас не будут… Давайте исправим положение. Нам необходимо после каждого “href=” добавить URL Яndexа. Тоесть нужно найти “href=” и заменить на ‘href=”http://www.yandex.ru/yandsearch?’. Для этого воспользуемся функцией замены строк: str_replace(). Функция принимает три обязательных параметра: “что найти“, “чем заменить“, и в какой исходной строке.

Добавим в наш скрипт перед выводом (тоесть перед командой “echo”) такой код:

Добавлено (25.05.2010, 09:43)
---------------------------------------------

Code
$content = str_replace(‘href=”/yandsearch?’, ‘target=”_blank” href=”http://www.yandex.ru/yandsearch?’, $content);

Добавлено (25.05.2010, 09:44)
---------------------------------------------
Теперь ссылки ведут на сайт Яндекса…

Итак, мы написали простейший ПАРСЕР (скрипт “граббинга” контента). Давайте еще раз посмотрим, какие PHP функции были задействованы в коде:
file_get_contents – Получить содержимое файла в виде одной строки
strpos – Возвращает позицию первого вхождения подстроки
substr – возвращает подстроку строки string длиной length , начинающегося с start символа по счету.
str_replace – Заменяет строку поиска на строку замены

Попробуйте написать парсер для какого либо новостного сайта сами…

Добавлено (25.05.2010, 09:46)
---------------------------------------------
Вот что смог, реализовать

Успехов..
Доступно только для пользователей

Добавлено (25.05.2010, 09:49)
---------------------------------------------
[off]Этот парсер уже не работает (главная страница новостей изменена)

но переделать при желании сможет любой biggrin [/off]


форум для интересных людей

Сообщение отредактировал sova77 - Вт, 25.05.2010, 09:51
 
Обьявления
Форум » Общий раздел » все для сайта » Пишем простейший ПАРСЕР контента на PHP
Страница 1 из 11
Поиск: