Правильный парсер html

Как вы делаете парсер (скрипт, который выдёргивает некую информацию с некой страницы)? Вставляете кучу strpos, preg_match и прочее "прицеливание"?

Предлагаю вашему вниманию абсолютно другой способ:  Simple HTML DOM Parser - скрипт, который позволяет работать с DOM документа, а конекретнее, использовать css-селекторы для поиска нужных элементов.

Маленький пример:

  1. <?php
  2. // загружаем библиотеку
  3. require './simplehtmldom/simple_html_dom.php';
  4.  
  5. // будем парсить гугл :)
  6. $d = file_get_html ( 'http://www.google.com/search?hl=en&q=%D1%8B%D1%80%D0%BE%D0%BB%D0%B2%D0%B0&aq=f&oq=&aqi=' );
  7.  
  8. // селектор результатов
  9. foreach($d->find('li.g') as $snippet) {
  10. $r = array();
  11. $r['link'] = $snippet->find( 'h3.r a', 0 )->href; // ссылка
  12. $r['title'] = $snippet->find( 'h3.r', 0 )->plaintext; // заголовок
  13. // убираем лишнее
  14. $snippet->find( 'div.s cite', 0 )->innertext = '';
  15. $snippet->find( 'div.s span', 0 )->innertext = '';
  16. $r['snippet'] = $snippet->find( 'div.s', 0 )->plaintext; // сниппет
  17. $rez[] = $r;
  18. }
  19.  
  20. // показываем..
  21. print_r( $rez );

Вот так легко и элегантно можно парсить сниппеты гугла :) Кстати, библиотеку лучше качать из транка svn - там версия выше + мануал обширнее.

1 комментарий:

  1. Выше круто! Долго искал такую библиотеку ! Спасибо!! Буду пробовал.

    ОтветитьУдалить