我目前正在编写 Perl 脚本,并使用 CPAN 模块 WWW:Mechanize 从网站获取 HTML 页面。 然而,我也希望能够处理离线 HTML 文件(我很可能会提前保存自己),这样我每次尝试新脚本时都不需要互联网。 所以基本上我的问题是如何改变它:
$mech->get( 'http://www.websiteadress.html' );
进入此:
$mech->get( 'C:\User\myfile.html' );
我已经看到 file://可能很有用,但我显然不知道如何使用它,因为我每次都会收到错误。
最佳答案
WWW::Mechanize 中的 get()
方法采用 URL 作为其参数。因此,您只需找出本地文件的正确 URL 即可。您使用“file://”方案是正确的。
我认为你需要:
$mech->get( 'file:///C:/User/myfile.html' );
请注意人们经常犯错的两件重要事情。
- URL 只能识别正斜杠 (
/
),因此您需要转换 Windows 扭曲的反斜杠 (\
)。 更新:正如 Borodin 在评论中指出的那样,这不是真的 - 您可以在 URL 中使用反斜杠。然而,反斜杠在 Perl 字符串中通常具有特殊含义,因此我建议尽可能使用正斜杠。 - 方案是
file
,后跟://
(带有两个斜杠),然后是主机名(空字符串)和斜杠(/
),然后是本地路径(C:/
)。这意味着file:
后面有三个斜杠。这似乎是错误的,所以人们经常忽略其中之一。 更新:根据鲍罗丁在评论中的建议,描述变得更加准确。
维基百科(一如既往)有更多信息 - file URI scheme
关于perl - 在本地文件上使用 perl WWW::Mechanize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770971/