我试图抓一页并获得一个要下载的文件的链接。 问题是只有当服务器识别出文件源的引用时,下载链接才有效。
我尝试在设置了referer的php脚本上使用Curl下载它,但它没有用。
所以,我尝试使用像浏览器一样工作的PhantomJS,但我无法找到需要点击它的链接。我尝试手动设置为目标网址下载链接,并作为引用原始网址,但我仍然有错误。
我使用以下代码登录该网站:
var pageLogin = require('webpage').create(),
server = 'http://domain.com/login.php',
data = 'redirect=index.php&login_username=username&login_password=password&';
pageLogin.open(server, 'post', data, function (status) {
if (status !== 'success') {
console.log('Unable to post!');
} else {
console.log(pageLogin.content);
}
});
我保存了cookie并且有效。
现在,我需要加载另一个页面,例如:
var pageRelease = require('webpage').create(),
serverRelease = 'http://domain.com/page.php?t=112';
在此页面中,我需要提取此链接:
<tr class="row1">
<td width="15%">aaa:</td>
<td width="70%">aaa <span title="aaa">[ 13-may-14 15:15 ]</span></td>
<td width="15%" rowspan="4" class="tCenter pad_6">
<p><a href="dl.php?t=112" class="dl-stub"><img src="http://domain.com/templates/default/images/attach_big.gif" /></a></p>
<p><a href="dl.php?t=112" class="dl-stub dl-link">drink.txt</a></p>
<p class="small">5KB</p>
<p style="padding-top: 6px;"><input id="gir-filelist-btn" type="button" class="lite" style="width: 120px;" value="download" /></p> </td>
</tr>
我的问题是我无法找到href:
<a href="dl.php?t=112" class="dl-stub dl-link">drink.txt</a>
我试过这个功能,但它没有工作:
var results = page.evaluate(function() {
var allParas = document.getElementsByClassName("dl-stub");
var num = allParas.length;
var title = new Array();
for(var i=0; i < num; i++) {
title[i] = allParas[i].childNodes[1].childNodes[0].InnerHTML;
}
return title;
});
for(var i=0; i < results.length; i++) {
console.log(results[i]) + "\n";
}
我该怎么办?
有什么建议吗?
由于
答案 0 :(得分:0)
您可以直接从您选择的元素中获取href
属性。你离我很远。
var results = page.evaluate(function() {
var allParas = document.getElementsByClassName("dl-stub");
var num = allParas.length;
var title = new Array();
for(var i=0; i < num; i++) {
title[i] = allParas[i].href;
}
return title;
});
for(var i=0; i < results.length; i++) {
console.log(results[i]) + "\n";
}