javascript - 使用 Web::Scraper 提取 javascript

标签 javascript html perl parsing

我在使用 Web::Scraper 提取 javascript 时遇到问题。下面是我的测试脚本:

#!/usr/bin/perl
use Modern::Perl;
use Web::Scraper;
use Data::Dumper;

my $contents = do { local $/; <DATA> };
my $scraper = scraper { process "//script", "scripts[]" => 'TEXT'; };
my $res = $scraper->scrape($contents);

say Dumper $res;

exit;

__DATA__
<html><head><title>hello</title></head>
<body>
  <script type="text/javascript">
    var dummy = {}
  </script>
</body>
</html>

我的输出:

$VAR1 = {
          'scripts' => [
                         ''
                       ]
        };

在我看来,我找到了脚本标签,但没有保存标签之间的内容。

最佳答案

深入研究 xpath 后我找到了解决方案。

更改刮板线:

my $scraper = scraper { process "//script", "scripts[]" => 'TEXT'; };

致:

my $scraper = scraper { process "//script" => 'scripts[]' =>
                    scraper { process '//text()', 'script'=>'TEXT'} };

输出 JavaScript 代码:

$VAR1 = {
          'scripts' => [
                         {
                           'script' => '
    var dummy = {}
  '
                         }
                       ]
        };

我不相信该流程是否简洁,但它确实有效。

关于javascript - 使用 Web::Scraper 提取 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16683106/

相关文章:

javascript - 绘制元素边框(动画)

javascript - 如何隐藏一个 anchor 标签并在同一个地方显示另一个 anchor 标签

perl - 在Perl中,直接全局别名和通过隐藏进行别名之间有什么区别吗?

C# 正则表达式替换和 *

javascript - 为什么我的幻灯片在 IE 上卡住?

javascript - UI可排序移动滚动

javascript - 宾果游戏,麻烦减去,重置计数器跟踪方 block 点击

jQuery Mega 菜单闪烁问题

perl - 让 perl 脚本使用多个辅助脚本中的一个

javascript - $(document).ready 函数不会启动