Простой парсер текста | PHP
Простой парсер текста | PHP

Предлагаю написать простейший парсер (программу, которая будет извлекать контент с удаленного сайта и выводить на нашей странице). В качестве "жертвы(примера)” выбераешь новости от yandex.ru – тебя интересует блок новостей "Главные новости” – от заголовка до разделительной линии (элемент <hr />).

Заходишь на сайт и анализируешь HTML. Находишь в нем уникальные строки, по которым мы определим – ОТ какого участка и ДО какого скрипт будет отбирать нужный тебе контент.
Находишь в исходном коде страницы такой текст: "<h2>Главные новости</h2>” – пусть это будет начало блока… и текст "<hr />” (тег разделительной линии), которым твой новостной блок заканчивается…
Итак, сформулируем нашу задачу:

Тебе необходимо: получить содержимое (текст) страницы, находящейся по адресу "http://news.yandex.ru/”, затем "отрезать” от полученного текста все, что находится ДО текста "<h2>Главные новости</h2>", и все, что находится ПОСЛЕ текста "<hr />”. Полученный текст вывести в браузер.
Собственно вот код скрипта:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
< ?php 
/* получаем содержимое нужной нам страницы в переменную $content (обратите внимание, – мы используем для этого функцию file_get_contents. Она может работать с удаленными URL только если в настройках PHP установлена опция allow_url_fopen) */ 
$content = file_get_contents(‘http://news.yandex.ru/’); 
// Определяем позицию строки, до которой нужно все отрезать (используем функцию strpos()). 
$pos = strpos($content,<h2>Главные новости’); 
/*Отрезаем все, что идет до нужной нам позиции (функция substr в данном случае принимает два параметра: строка для обработки и //номер позиции. Функция вернет строку, НАЧИНАЯ с указанной позиции) */ 
$content = substr($content, $pos); 
// Точно таким же образом находим позицию второй строки 
$pos = strpos($content,<hr />); 
// Отрезаем нужное количество символов от нулевого 
$content = substr($content, 0, $pos); 
// выводим полученную строку. 
echo $content; 
?>

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

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

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

Теперь ссылки ведут на сайт Яндекса.











Просмотров: 106 | Добавлено: 22.04.2015, 21:04
Скачать бесплатно » Советы, инструкции по Windows и ПО » PHP


|