Мне нужно разобрать 5000 файлов, которые выглядят довольно идентичными.Как я могу извлечь содержимое конкретной таблицы из источника HTML с помощью Perl?
Мне нравится использовать HTML::TokeParser::Simple и DBI, чтобы выполнить синтаксический анализ и сохранить результаты.
У меня мало опыта работы с HTML::TokeParser::Simple
, но эта задача проходит над моей головой. Примечание: я также рассмотрел идеи, которые, как представляется, также подходят. Но на данный момент у меня возникают проблемы с получением выражений xpath-выражений: я попытался определить соответствующие xpath-выражения, которые должны быть заполнены в Perl-программе.
Это то, что я прямо сейчас:
use strict;
use HTML::TreeBuilder::XPath;
my $tree = HTML::TreeBuilder::XPath->new;
#use real file name here
open(my $fh, "<", "file.html") or die $!;
$tree->parse_file($fh);
my ($name) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($type) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($adress) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($adress_two) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($telephone) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($fax) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($internet) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($officer) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($employees) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($offices) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($worker) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($country) = $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
my ($the_council)= $tree->findnodes(qq{/html/body/table/tr[1]/td[2]});
print $name->as_text;
print $type->as_text;
print $adress->as_text;
print $adress_two->as_text;
print $telephone->as_text;
print $fax->as_text;
print $internet->as_text;
print $officer->as_text;
print $employees->as_text;
print $offices->as_text;
print $worker->as_text;
print $country->as_text;
print $the_council->as_text;
это все в порядке? Обратите внимание - я хочу сохранить это в базе данных.
КСТАТИ: Смотрите один из примеров сайтов:
в сером затененном блоке вы видите разыскиваемую информацию: 17 линий, которые хотели. Примечание. У меня есть 5000 различных HTML-файлов - все они структурированы одинаково!
Это означает, что я был бы рад иметь шаблон, который можно запустить с помощью HTML :: TokeParser :: Simple и DBI.
Могу ли я использовать вышеупомянутый код ... или мне нужно его изменить.
Любовь к вам услышать! Это было бы прекрасно!!
FYI: Я попытался изменить ваш вопрос, но я не могу понять смысл названия. Попробуйте придумать что-нибудь описательное. –
См. Также http://stackoverflow.com/q/3946874/100754 –