【问题标题】:Phantomjs get link and click itPhantomjs 获取链接并点击它
【发布时间】:2014-08-07 17:53:12
【问题描述】:

我正在尝试抓取一页并获取 1 个指向要下载的文件的链接。 问题是下载链接只有在服务器识别文件源的引用者时才有效。

我尝试在设置了引用者的 php 脚本上使用 Curl 下载它,但没有成功。

所以,我尝试使用像浏览器一样工作的 PhantomJS,但我找不到需要单击它的链接。我尝试手动将下载链接设置为目标 url,并将原始 url 设置为引用,但我仍然有错误。

我使用此代码登录该网站:

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 &nbsp;<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";
    }

我能做什么?

有什么建议吗?

谢谢

【问题讨论】:

    标签: javascript php phantomjs referer


    【解决方案1】:

    您可以直接从您选择的元素中获取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";
    }
    

    【讨论】:

    • 您可以直接从您选择的元素中获取 href 属性。你离得不远了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多