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

标签 perl www-mechanize

我目前正在编写 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' );

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

  1. URL 只能识别正斜杠 (/),因此您需要转换 Windows 扭曲的反斜杠 (\)。 更新:正如 Borodin 在评论中指出的那样,这不是真的 - 您可以在 URL 中使用反斜杠。然而,反斜杠在 Perl 字符串中通常具有特殊含义,因此我建议尽可能使用正斜杠。
  2. 方案是 file,后跟 ://(带有两个斜杠),然后是主机名(空字符串)和斜杠(/),然后是本地路径(C:/)。这意味着 file: 后面有三个斜杠。这似乎是错误的,所以人们经常忽略其中之一。 更新:根据鲍罗丁在评论中的建议,描述变得更加准确。

维基百科(一如既往)有更多信息 - file URI scheme

关于perl - 在本地文件上使用 perl WWW::Mechanize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770971/

相关文章:

perl - 从命令行搜索 cpan.org

javascript - 根据菜单选择将文本文件内容加载到文本字段中

c - 非常简单的 DNS 服务器

Perl 万维网 :Mechanize not connecting over https

Perl - 使用 WWW::Mechanize 获取网址

perl - 如何将 CPAN 的配置从 local::lib 更改为 sudo 首选项

arrays - 如何在 perl 中正确创建和循环 3D 数组?

perl - 我怎样才能使 WWW :Mechanize to not fetch pages twice?

Perl WWW::Mechanize Parse 内容问题?