在本地文件上使用perl WWW :: Mechanize

时间:2016-08-04 15:02:40

标签: perl www-mechanize

我目前正在研究Perl脚本,我使用CPAN模块WWW:Mechanize来从网站获取HTML页面。 但是,我希望能够处理离线HTML文件(我最有可能预先保存自己),所以每次我尝试新脚本时都不需要互联网。 所以基本上我的问题是如何改变这个:

$mech->get( 'http://www.websiteadress.html' );

进入这个:

$mech->get( 'C:\User\myfile.html' );

我见过那个文件://可能很有用,但我显然不知道如何使用它,因为每次都会出错。

1 个答案:

答案 0 :(得分:6)

WWW :: Mechanize中的get()方法将URL作为其参数。因此,您只需要确定本地文件的正确URL。你使用“file://”方案就行了。

我想你需要:

$mech->get( 'file:///C:/User/myfile.html' );

注意人们经常出错的两件重要事情。

  1. 网址只能理解正斜杠(/),因此您需要转换Windows'扭曲的反斜杠(\)怪物。 更新:正如Borodin在评论中指出的那样,这不是真的 - 您可以在网址中使用反斜杠。但是,反斜杠通常在Perl字符串中有特殊含义,所以我建议尽可能使用正斜杠。
  2. 方案是file,后跟://(带有两个斜杠),然后是主机名(这是一个空字符串)斜杠(/)然后是你的本地路径(C:/)。这意味着file:之后有三个斜杠。这似乎是错误的,所以人们经常省略其中一个。 更新:根据Borodin的评论建议,说明更加准确。
  3. 维基百科(一如既往)有更多信息 - file URI scheme