我有一个网页,它使用客户端 JavaScript 在页面上的数据显示给用户之前对其进行格式化。
是否可以以某种方式使用
wget
下载页面并使用某种客户端 JavaScript 引擎来格式化数据,就像在浏览器中显示的那样?
你可能可以通过类似 PhantomJS
来实现这一点您可以编写一个 phantomjs 脚本,它会像浏览器一样加载页面,然后截取屏幕截图或使用 JS 检查页面并提取数据。
这是一个简单的 phantomjs 小脚本,它会触发网页上的 javascript,并允许您将其下拉到本地:
file: get.js
var page = require('webpage').create(),
system = require('system'), address;
address = system.args[1];
page.scrollPosition= { top: 4000, left: 0}
page.open(address, function(status) {
if (status !== 'success') {
console.log('** Error loading url.');
} else {
console.log(page.content);
}
phantom.exit();
});
按如下方式使用:
$> phantomjs /path/to/get.js "http://www.google.com" > "google.html"
将
/path/to
、url
和 filename
更改为您想要的内容。
wget 则不然,因为我怀疑它是否包含任何形式的 JavaScript 引擎。但是,您可以使用 WebKit 来处理页面,从而处理输出。
使用这样的东西作为如何获取内容的基础:http://situated.wordpress.com/2008/06/04/take-screenshots-of-a-website-from-the-command-line/
如果您只需要链接,您可以从 elinks'
-dump
功能中解析它们。
这也提供了文档的 ASCII 版本,但据我所知,它没有提供经过处理的 HTML。
对我有用的过滤器是这样的:
sed -ne 's!^.*[0-9].*\(https://.*\)$!\1!p'