Parsing Html-файла

Тема в разделе "Perl программирование", создана пользователем Bazzilic, 6 июл 2007.

Статус темы:
Закрыта.
  1. Bazzilic

    Bazzilic Гость

    Репутация:
    0
    Задача стоит следующая: есть большое количество однотипных html-страниц, содержащих информацию типа той, что хранится на афише.ру, т.е. всякие музеи, выставки, театры, достопримечательности и т.д. Надо извлекать оттуда инфу, т.е. очистить от html-кода и определить, что есть что.

    Ну и в связи с этим вопросы:
    • Не сталкивался ли кто-нибудь с такой задачей, и если сталкивался, то как решал?
    • Какой есть модуль для качественного разбора html-файлов? Я использовал HTML::Parser, но он зачем-то использует многопоточность, что вызывает больше проблем, чем решает.
     
  2. NikSoft

    NikSoft Гость

    Репутация:
    0
    Для: Bazzilic
    Я решал такую задачу.
    Использовал .NET и регулярные выражения.
     
  3. Vovochka

    Vovochka Гость

    Репутация:
    0
    Я как-то сталкнулся с такой задачей, попробовал HTML::Parser, вообще говря не знал, что он использует многопоточность, но что процесс разбора до ужаса неудобен, это я понял.

    HTML::TreeBuilder - вот решение, которое мне понравилось.
    Строишь дерево, и методом пары тыков узнаешь где в этом дереве нужная тебе инфа.
    Для спаравки читай справку к модулю, (HTML::Tree) если будут проблемы, пиши.
     
  4. Vovochka

    Vovochka Гость

    Репутация:
    0
    Код:
     #!/usr/bin/perl
    use HTML::TreeBuilder;
    
    for (1..67) {
    $_ = sprintf '%04d', $_;
    my $name = "erf$_.html";
    my $page_url = "http://www.giantitp.com/comics/$name";
    system "wget.pl $page_url";
    my $tree = HTML::TreeBuilder->new;
    $tree->parse_file("pool/$name");
    @imgs = $tree->look_down('_tag' => 'img');
    #	for (my $i = 0; $i < @imgs; $i++) {					# Преобретение
    #		print "$i:\t",$imgs[$i]->attr('src'),"\n";					# Знания!
    #	}											#
    $comics_img = 'http://www.giantitp.com'.$imgs[16]->attr('src');		# Знание сила!
    system "wget.pl $comics_img";
    unlink "pool/$name";	#Ибо нефиг!
    $tree->delete;
    }

    Вот мой небольшой скрипт по сдиранию комиксов с сайта :unsure:
    К сожелению, имена картинок были жестокок измучены хешем, посему мне приходиться дергать их из страницы ;)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей