Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Старый 04.03.2011, 19:07   #1
Заблокирован
 Разведчик
Аватар для byearab
 
byearab скоро будет известенbyearab скоро будет известенbyearab скоро будет известен
Регистрация: 02.02.2011
Сообщений: 18
Популярность: 229
Сказал(а) спасибо: 5
Поблагодарили 81 раз(а) в 52 сообщениях
Отправить сообщение для byearab с помощью ICQ
 
По умолчанию Пишем парсеры

Пишем простейший ПАРСЕР контента на PHP

Предлагаю написать простейший парсер (программу, которая будет извлекать контент с удаленного сайта и выводить на нашей странице). В качестве “жертвы” выберем [Ссылки могут видеть только зарегистрированные пользователи. ] – нас интересует блок новостей “Главные новости” – от заголовка до разделительной линии (элемент <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($content0$pos);

    
// выводим полученную строку.
    
echo $content;
    
?>
Однако, давайте посмотрим на ссылки… Как видно, в исходном коде применяются относительные ссылки, следовательно, работать они у нас не будут… Давайте исправим положение. Нам необходимо после каждого “href=” добавить URL Яndexа. Тоесть нужно найти “href=” и заменить на ‘href=”[Ссылки могут видеть только зарегистрированные пользователи. ]. Для этого воспользуемся функцией замены строк: str_replace(). Функция принимает три обязательных параметра: “что найти“, “чем заменить“, и в какой исходной строке.

Добавим в наш скрипт перед выводом (то-есть перед командой “echo”) такой код:
PHP код:
$content str_replace(‘href=/yandsearch?‘target=”_blank” href=”http://www.yandex.ru/yandsearch?’, $content); 
Теперь ссылки ведут на сайт Яндекса…

Итак, мы написали простейший ПАРСЕР (скрипт “граббинга” контента). Давайте еще раз посмотрим, какие PHP функции были задействованы в коде:

* [Ссылки могут видеть только зарегистрированные пользователи. ] – Получить содержимое файла в виде одной строки
* [Ссылки могут видеть только зарегистрированные пользователи. ] – Возвращает позицию первого вхождения подстроки
* [Ссылки могут видеть только зарегистрированные пользователи. ] – возвращает подстроку строки string длиной length , начинающегося с start символа по счету.
* [Ссылки могут видеть только зарегистрированные пользователи. ] – Заменяет строку поиска на строку замены

Можете написать парсер для какого либо новостного сайта сами…
__________________________________________________ _______________

Парсер картинок yandex.

В ходе этого урока мы научимся писать систему парсинга картинок.
Очень удобная система,- может пригодится, если сайт должен содержать множество картинок, а ни сила ни время не позволяет добавить их вручную. Например, такую систему можно использовать для Интернет магазинов, при отображении картинок позиций.
Пример такой системы можно наблюдать на сайте – zvuc.info

Для начала обработаем параметр GET, запишем его в переменную и заменим все пробелы на знак “+”:
PHP код:
$q=$_GET['q'];
$q=str_replace(” “,+,$q); 
Теперь достанем весь контент из запрошенной страницы yandex:
PHP код:
$str file_get_contents(‘http://images.yandex.ru/yandsearch?text=’.$q.’&stype=image’); 
Теперь будем искать начало границы с нужным контентом:
PHP код:
$arr explode(‘3)>,$str); 
После приступим непосредственно к самому парсингу. Получаем содержимое между двумя частями контента:
PHP код:
    for($i=1;$i<=2;$i++) {
    
$tmp $arr[$i];
    
$tmp substr($tmp,strpos($tmp,<img’)+0);
    
$tmp substr($tmp,0,strpos($tmp,</a>));

    } 
И отображаем их на экран:
PHP код:
print($tmp); 
Список всех используемых функций:

[Ссылки могут видеть только зарегистрированные пользователи. ] — Заменяет строку поиска на строку замены
[Ссылки могут видеть только зарегистрированные пользователи. ] — Получить содержимое файла в виде одной строки
[Ссылки могут видеть только зарегистрированные пользователи. ] — Разбивает строку на подстроки
[Ссылки могут видеть только зарегистрированные пользователи. ] — Возвращает подстроку
[Ссылки могут видеть только зарегистрированные пользователи. ] — Возвращает позицию первого вхождения подстроки

[Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось byearab; 04.03.2011 в 19:10.
  Ответить с цитированием
Пользователь сказал cпасибо:
Gamer1912 (29.02.2012)
Старый 04.03.2011, 22:47   #2
 Разведчик
Аватар для Fiery Dragon
 
Fiery Dragon на правильном путиFiery Dragon на правильном пути
Регистрация: 25.12.2009
Сообщений: 29
Популярность: 145
Сказал(а) спасибо: 4
Поблагодарили 34 раз(а) в 20 сообщениях
 
По умолчанию Re: Пишем парсеры

зачем изобретать велосипед, [Ссылки могут видеть только зарегистрированные пользователи. ] "simple php dom parser"
  Ответить с цитированием
Старый 05.03.2011, 06:14   #3
Заблокирован
 Разведчик
Аватар для byearab
 
byearab скоро будет известенbyearab скоро будет известенbyearab скоро будет известен
Регистрация: 02.02.2011
Сообщений: 18
Популярность: 229
Сказал(а) спасибо: 5
Поблагодарили 81 раз(а) в 52 сообщениях
Отправить сообщение для byearab с помощью ICQ
 
По умолчанию Re: Пишем парсеры

Цитата:
Сообщение от Fiery DragonПосмотреть сообщение
зачем изобретать велосипед, [Ссылки могут видеть только зарегистрированные пользователи. ] "simple php dom parser"

Статья рассчитана для тех кто не знает (если знаешь - молодец, можешь пропустить топик и идти далее)
  Ответить с цитированием
Старый 06.03.2011, 02:54   #4
 Разведчик
Аватар для D@blTurbo
 
D@blTurbo никому не известный тип
Регистрация: 02.01.2011
Сообщений: 3
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Пишем парсеры

Цитата:
Сообщение от byearabПосмотреть сообщение
Статья рассчитана для тех кто не знает

Спасибо теперь я догнал что где)

Цитата:
Сообщение от Fiery DragonПосмотреть сообщение
зачем изобретать велосипед, [Ссылки могут видеть только зарегистрированные пользователи. ] "simple php dom parser"

Не все
знают что там написано
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Пишем Icq бота на Php megaKAKER Web-программирование и технологии 3 16.04.2012 14:27
Пишем символами в чате l3ounTy DotA Allstars 1 03.11.2010 00:00

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 22:54.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net