perl - 使用HTML提取数据

时间:2013-09-19 16:22:03

标签: regex perl perl-module

use HTML::TreeBuilder::XPath;

my $temp_path =  $ENV{'TEMP'}."\\html\\globals_func.html";   

// prints as C:\Users\Rockstar\Appdata\Local\Temp\html\globals_func.html

my $url = $temp_path;
my $page = get($url) or die $!;
my $p = HTML::TreeBuilder::XPath->new_from_content($page);

我收到错误:不支持协议“c”

时输出正确
my $url='file:///C:/Users/Rockstar/AppData/Local/Temp/html/globals_func.html';

因为我想让它在所有系统中运行,所以我使用的是全局环境变量。

如何使用正则表达式在$ url中将'\'更改为'/',还是有其他方式?

HTML文件存在于系统本身。

2 个答案:

答案 0 :(得分:3)

使用Path::Class::URI创建跨平台file:// URI。

答案 1 :(得分:2)

这应该适合你。

use HTML::TreeBuilder::XPath;

my $temp_path =  $ENV{'TEMP'}."\\html\\globals_func.html";   

// prints as C:\Users\Rockstar\Appdata\Local\Temp\html\globals_func.html

$temp_path=~tr/\\/\//; # Replaces backward slashes with forward slashes

$temp_path='file://'.$temp_path; # Appends path with file://

my $url = $temp_path;
my $page = get($url) or die $!;
my $p = HTML::TreeBuilder::XPath->new_from_content($page);