我在使用 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/