Perl быстрый экстракт HTML

0

Я хочу извлечь данные с нескольких 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. Также не уверен, что это будет быстрее.

  • 0
    Если часть get ($ url) работает медленно, то это не ваш код, а скорость внешнего веб-сайта (HTTP-запрос / ответ), от которого вы зависите.
  • 2
    Если вам нужно выполнить много таких запросов (например, получить тысячи страниц), то единственный способ ускорить его - это, вероятно, запустить несколько экземпляров вашего скрипта или потоков, чтобы несколько параллельных процессов выполняли запросы одновременно.
Показать ещё 2 комментария
Теги:
extract

1 ответ

1

Посмотрите на Web :: Скребок, а не на использование регулярных выражений. Что-то вроде этого может сэкономить вам много времени и будет менее подвержено ошибкам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню