1

我工作的公司将在几个月后进行网站重新设计,我们需要的其中一件事是包含网站上每个页面的每个 URL 的表格。然后,最理想的情况是,会有包含一组预定义 JavaScript 变量(在本例中为 Omniture 变量,因此我们可以确保每个页面都正确标记其在站点层次结构中的位置)的值的列。

以下是给定页面的 HTML 中可能包含的内容的示例:

<script type="text/javascript">     
metrics_level2  = "biz";
metrics_level3  = "products";
metrics_level4  = "my_awesome_product";
metrics_pagename    = "biz|products|my_awesome_product";    
</script>

我已经用 RapidMiner 爬取了该站点并且数据已准备就绪,但我的问题是隔离这些变量并将“metrics_level2”、“metrics_level3”等放在他们自己的列中的最佳方法。XPath 是最好的方法吗?常用表达?我对 XPath 的尝试似乎在标签之间引入了全部内容,这需要在事后进行大量清理。

4

1 回答 1

4

如果您使用 PhantomJS http://phantomjs.org/,您可以像在网页中一样使用 JavaScript 访问这些变量。一个非常简单的例子如下:

//where url is the page that contains these variables.
page.open(url, function (status) {
    //Page is loaded!
    var dataFromPage = page.evaluate(function(){
       return {
                 metrics_level2:metrics_level2,
                 metrics_level3:metrics_level3,
                 metrics_level4:metrics_level4
              };
    });
    //dataFromPage now contains those variables

    phantom.exit();
});

如果您已经将网页抓取并保存为 html 文件或其他内容,则可以使用与content打开页面相对应的方法设置页面对象的内容,如上所示。见http://phantomjs.org/api/webpage/property/content.html

于 2013-09-26T19:59:33.380 回答