我正在做一些网络抓取(网站所有者的同意)并且遇到了一些在移动滑块时更新的数据。
问题是这些数据在一些 javascript 中。我正在使用允许 CSS 选择器和 xpath 选择器的 perl Web::Scraper,但我似乎无法隔离 javascript。
我试过属性选择器;script[src="path_to.js"] 普通节点选择器 'script' 和绝对 css 路径——根本不想工作。
任何想法如何获取脚本节点的内容?
我正在做一些网络抓取(网站所有者的同意)并且遇到了一些在移动滑块时更新的数据。
问题是这些数据在一些 javascript 中。我正在使用允许 CSS 选择器和 xpath 选择器的 perl Web::Scraper,但我似乎无法隔离 javascript。
我试过属性选择器;script[src="path_to.js"] 普通节点选择器 'script' 和绝对 css 路径——根本不想工作。
任何想法如何获取脚本节点的内容?
use HTML::Query ();
# get raw (unparsed) content of page into $content.
# eg: $mech->content or similar
my $content = qq|
<html>
<head>
<script type="text/javascript">
function init() {
var x = [1,2,3,4,5,6,7];
alert(x);
}
</script>
</head>
<body onload="init()">
</body>
</html>
|;
# This is a CSS selector ----------------------vvvvv
my ($e) = HTML::Query::Query(text => $content, 'script');
die "couldn't find script element!\n" unless defined $e;
# can't use as_text or as_trimmed_text from HTML::Element
print $e->as_XML."\n";
这是一个Mojo::DOM示例,其中'text'
选择标签包含的位:
use Mojo::DOM;
my $dom = Mojo::DOM->new( $content );
say $dom
->find( 'script' )
->map( 'text' )
->join( "\n" );
但是,听起来好像您可能试图获取 JavaScript 对 DOM 所做的某些事情,在这种情况下,Perl 可能无法看到它。