Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Parsing Html-файла
Форум программистов > Интернет и сети > Web-программирование > Perl программирование
Bazzilic
Задача стоит следующая: есть большое количество однотипных html-страниц, содержащих информацию типа той, что хранится на афише.ру, т.е. всякие музеи, выставки, театры, достопримечательности и т.д. Надо извлекать оттуда инфу, т.е. очистить от html-кода и определить, что есть что.

Ну и в связи с этим вопросы:
  • Не сталкивался ли кто-нибудь с такой задачей, и если сталкивался, то как решал?
  • Какой есть модуль для качественного разбора html-файлов? Я использовал HTML::Parser, но он зачем-то использует многопоточность, что вызывает больше проблем, чем решает.
NikSoft
Для: Bazzilic
Я решал такую задачу.
Использовал .NET и регулярные выражения.
Vovochka
Я как-то сталкнулся с такой задачей, попробовал HTML::Parser, вообще говря не знал, что он использует многопоточность, но что процесс разбора до ужаса неудобен, это я понял.

HTML::TreeBuilder - вот решение, которое мне понравилось.
Строишь дерево, и методом пары тыков узнаешь где в этом дереве нужная тебе инфа.
Для спаравки читай справку к модулю, (HTML::Tree) если будут проблемы, пиши.
Vovochka
Код
#!/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;
}



Вот мой небольшой скрипт по сдиранию комиксов с сайта smile.gif
К сожелению, имена картинок были жестокок измучены хешем, посему мне приходиться дергать их из страницы wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2008 IPS, Inc.