0

我正在做一些网络抓取(网站所有者的同意)并且遇到了一些在移动滑块时更新的数据。

问题是这些数据在一些 javascript 中。我正在使用允许 CSS 选择器和 xpath 选择器的 perl Web::Scraper,但我似乎无法隔离 javascript。

我试过属性选择器;script[src="path_to.js"] 普通节点选择器 'script' 和绝对 css 路径——根本不想工作。

任何想法如何获取脚本节点的内容?

4

2 回答 2

0

试试HTML::Query

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"; 
于 2013-08-08T05:15:57.477 回答
0

这是一个Mojo::DOM示例,其中'text'选择标签包含的位:

use Mojo::DOM;

my $dom = Mojo::DOM->new( $content );

say $dom
    ->find( 'script' )
    ->map( 'text' )
    ->join( "\n" );

但是,听起来好像您可能试图获取 JavaScript 对 DOM 所做的某些事情,在这种情况下,Perl 可能无法看到它。

于 2015-09-16T21:22:30.393 回答