Я хочу извлечь данные с нескольких html-страниц, но я не знаком с извлечением HTML. У меня есть рабочий код, который читает весь источник страницы, а затем удаляет ненужные части с помощью регулярного выражения, однако, похоже, он довольно медленный.
Я читаю финансовую информацию и хочу извлечь только один номер из каждой страницы, поэтому, по возможности, не нужно читать всю страницу каждый раз.
Это то, что у меня есть в Perl:
use LWP::Simple;
my $mult;
my $url = 'http://www.wikinvest.com/stock/Apple_(AAPL)/Data/Net_Income/2014/Q1';
$content = get($url);
$content =~ s/\R//g; # remove linebreaks
$content =~ s/.*\<div class="nv_lefty" id="nv_value">//; # remove everything before tag
$content =~ s/\<.*//g; # remove everything after <...
if ($content =~ s/billion//) {$mult = 1e9;}
elsif ($content =~ s/million//) {$mult = 1e6;}
else {$mult = 1;}
$content =~ s/[^\d.-]//g; # keep numbers, commas and - only
$content = $content * $mult;
Команда get($url)
довольно медленная, так как она извлекает много данных, тогда как меня интересует только один номер. Есть ли более быстрый способ сделать это? Я просмотрел HTML :: TableExtract, но я не думаю, что номер, который я извлекал, находится в стандартной таблице HTML. Также не уверен, что это будет быстрее.
Посмотрите на Web :: Скребок, а не на использование регулярных выражений. Что-то вроде этого может сэкономить вам много времени и будет менее подвержено ошибкам.