Perl快速HTML提取

Perl快速HTML提取,html,regex,perl,extract,Html,Regex,Perl,Extract,我想从几个html页面提取数据,但不熟悉html提取。我有一个工作代码,读取整个页面的源代码,然后用regex删除不需要的部分,但是它看起来相当慢 我正在阅读财务信息,只想从每一页中提取一个数字,所以如果可能的话,我不想每次都阅读整页 这就是我在Perl中的内容: use LWP::Simple; my $mult; my $url = 'http://www.wikinvest.com/stock/Apple_(AAPL)/Data/Net_Income/2014/Q1'; $content

我想从几个html页面提取数据,但不熟悉html提取。我有一个工作代码,读取整个页面的源代码,然后用regex删除不需要的部分,但是它看起来相当慢

我正在阅读财务信息,只想从每一页中提取一个数字,所以如果可能的话,我不想每次都阅读整页

这就是我在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;
使用LWP::Simple;
我的$mult;
我的$url=http://www.wikinvest.com/stock/Apple_(AAPL)/数据/净收入/2014/Q1';
$content=get($url);
$content=~s/\R//g;#删除换行符
$content=~s/*\/#在标记之前删除所有内容

$content=~s/\查看而不是使用正则表达式。这样做可以节省大量时间,并且不容易出错。

如果get($url)部分速度较慢,那么这不是您的代码,而是您依赖的外部网站速度(HTTP请求/响应)。如果您需要执行许多类似的请求(即获取1000页)那么唯一的加速方法可能就是运行脚本或线程的多个实例,让更多的并行进程同时处理请求。其他金融网站是否以更好的格式提供了您要查找的数据?我想你也许可以从雅虎的一个csv文件中获得你想要的所有信息。您要检索的具体数字是多少?替换完全没有用,因为您要查找的数据总是在同一个位置:
102.2亿美元
。您只需要使用匹配此特定id的DOM查询、XPath查询或正则表达式。