Parsing Html-файла

  • Автор темы Bazzilic
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

Bazzilic

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

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

NikSoft

#2
Для: Bazzilic
Я решал такую задачу.
Использовал .NET и регулярные выражения.
 
V

Vovochka

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

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

Vovochka

#4
Код:
 #!/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:
К сожелению, имена картинок были жестокок измучены хешем, посему мне приходиться дергать их из страницы ;)
 
Статус
Закрыто для дальнейших ответов.