使用CSS Selector定位存储在javascript元素中的一些数据

时间:2013-08-08 04:48:15

标签: javascript css perl web-scraping selector

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

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

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

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

2 个答案:

答案 0 :(得分: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"; 

答案 1 :(得分:0)

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

use Mojo::DOM;

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

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

然而,听起来好像你可能试图获得JavaScript对DOM所做的事情,在这种情况下Perl可能无法看到它。