Парсинг — это просто!
Довольно часто мне приходится парсить сайты, разнообразные rss фиды, xml файлы. Для парсинга html я обычно использовал curl + regexp. Когда-то надоедает делать одно и то же, в очередной раз мне понадобился парсинг, причём, парсер должен был быть универсальным, т.е. можно было бы задавать много сайтов и тянуть оттуда инфу. Безусловно, под каждый сайт писать регулярные выражения(т.е. отдельный парсер) было бы глупо, а велосипед изобретать не хотелось, я сходил в Google, к моему удивлению, я нашел довольно неплохой инструмент — Html Simple Dom Parser.
Коротко о возможностях и требованиях:
1. Требует PHP5
2. Как понятно из названия, использует либу DOM
3. Может не только тянуть, но и изменять html ноды (интересно, какое можно найти этому практическое применение).
4. Для выборки используют селекторы, похожие на селекторы jQuery.
5. Поддерживает невалидный html
С требованиями понятно, но, как говорится, проще один раз увидеть, чем сто раз услышать. Ниже пример работы с библиотекой — забираем с Яндекса ответ на запрос «розовый слон».
<!--?php //Подключаем библиотеку require_once('simple_html_dom.php'); $item_list = array(); //Загржаем html в переменную $buffer = file_get_html("http://yandex.ua/yandsearch?text=%D1%80%D0% BE%D0%B7%D0%BE%D0%B2%D1%8B%D0%B9+%D1%81%D0%BB%D0%BE%D0%BD&lr=143"); //При помощи селектора выбираем необходимые ноды, заталкиваем в массив foreach($buffer->find('a[class=cs]') as $anchor) { array_push($item_list, array($anchor->plaintext, $anchor->href)); $anchor->clear(); } $buffer->clear(); print_r($item_list); >
На выходе получаем:
[0] => Array ( [0] => Сеть турагентств "Розовый Слон" Туры из Ростова, туры... [1] => http://www.pinkelephant.ru/ ) [1] => Array ( [0] => Розовый слон [1] => http://www.pink-elephant.ru/ ) [2] => Array ( [0] => Детские песенки «Розовый слон» - текст и слова песни... [1] => http://www.karaoke.ru/song/6867.htm ) [3] => Array ( [0] => Детский театр моды "Розовый Слон" [1] => http://rozoviyslon.com.ua/ ) [4] => Array ( [0] => YouTube - детские песни Розовый слон [1] => http://www.youtube.com/watch?v=Q5QET4IJLWo ) [5] => Array ( [0] => Клуб саморазвития "Розовый слон" - Главная страница [1] => http://www.rozovyislon.kz/ ) [6] => Array ( [0] => Розовый слон - Интернет-подарки, оригинальные подарки... [1] => http://slon.at.ua/ ) [7] => Array ( [0] => ПЕСНИ из КИНОФИЛЬМОВ." Боба и слон" [1] => http://www.songkino.ru/songs/boba_slon.html ) [8] => Array ( [0] => Тахи Мие. Маша и Розовый слон [1] => http://zhurnal.lib.ru/t/tahi_m/mashairozovijslon.shtml ) [9] => Array ( [0] => Розовый слон — Осин Евгений — Караоке — красноЯРСК.info... [1] => http://karaoke.yarsk.info/osin-evgenij/rozovyj-slon/ )
Важно не забывать вызывать clear() для нод, потому что память достаточно быстро исчерпывается.
Саму библиотеку и более подробную информацию можно найти на сайте проекта
- Апрель 2012 (1)
- Февраль 2012 (1)
- Ноябрь 2011 (1)
- Сентябрь 2011 (3)
- Февраль 2011 (1)
- Сентябрь 2010 (1)
- Август 2010 (2)
- Май 2010 (3)


