作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我工作的公司将在几个月内重新设计网站,我们需要的其中一件事是一个包含网站上每个页面的每个 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 的尝试似乎在标签之间引入了全部内容,这需要事后进行大量清理工作。
最佳答案
如果你使用 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
关于javascript - 有没有办法抓取网站并在每个页面上获取 JavaScript 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19037418/
我是一名优秀的程序员,十分优秀!