我想评估此网站上的javascript链接:
例如,我有这个元素:
<li class="language">
<a id="ctl00_btnLang" href="javascript:__doPostBack('ctl00$btnLang','')">English </a>
<img src="/CSS/images/langArwEn.gif" alt="Language Arrow" /></li>
所以,我尝试使用phantomjs来评估它,使用this code:
var page = require('webpage').create();
var fs = require('fs'),
system = require('system');
page.open('http://www.egypt.gov.eg', function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
var p = page.evaluate(function () {
return document.getElementsByID('html')[0].innerHTML
});
fs.write('out.htm', p, 'w');
console.log(p);
}
phantom.exit();
});
但它没有评估html,它只是按原样返回。那么有没有办法用phantomjs来评估整个页面的html,有没有办法挑出那些有javascript逐个评估的元素?
答案 0 :(得分:0)
第一个问题是你通过'评估'页面上的javascript链接是什么意思...你想让PhantomJS点击它们吗?
页面自动化的文档在这里:
http://phantomjs.org/page-automation.html
要点击此特定链接,您可以执行以下操作:
var page = require('webpage').create();
page.open('http://www.egypt.gov.eg', function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
var p = page.evaluate(function () {
document.getElementById('ctl00_btnLang').click()
});
}
phantom.exit();
});
...但是这会将浏览器发送到新的网址,我不确定在这种情况下你的PhantomJS页面对象会发生什么。
是否要点击该页面上的所有javascript链接并获取已加载的每个新HTML页面的内容?
CasperJS似乎更容易“CasperJS是PhantomJS的导航脚本和测试工具”
http://docs.casperjs.org/
请查看此处的示例代码,该示例代码从一系列起始网址中删除并跟踪链接:
https://github.com/n1k0/casperjs/blob/master/samples/dynamic.js