为什么PhantomJS没有抓取重定向到的页面?

时间:2017-04-28 13:00:37

标签: javascript web-scraping phantomjs

我在抓http://www.asx.com.au/asx/markets/optionPrices.do?by=underlyingCode&underlyingCode=XJO

它首先显示一个空白的白页,在该页面中有一些混淆的JS代码。

该代码自动发送POST请求,然后加载实际页面。

我有这个代码跟随重定向的页面,但它不起作用。

var page;
var myurl = "http://www.asx.com.au/asx/markets/optionPrices.do?by=underlyingCode&underlyingCode=XJO";

var renderPage = function (url) {
    page = require('webpage').create();

    page.onNavigationRequested = function (url, type, willNavigate, main) {
        if (main && url != myurl) {
            myurl = url;
            console.log("redirect caught")

            // GUILTY CODE
            renderPage(url);
        }
    };

    page.open(url, function (status) {
        if (status === "success") {
            console.log("success")
            page.render('yourscreenshot.png');
            phantom.exit(0);
        } else {
            console.log("failed")
            phantom.exit(1);
        }
    });
}

renderPage(myurl);

只输出

success
redirect caught

查看我的代码,为什么GUILTY CODE部分未被执行...为什么在重定向被捕获后没有调用renderPage(url)

1 个答案:

答案 0 :(得分:1)

据我所知,phantomJS并不能很好地处理重定向。这可能是你的问题。您可能希望以不同的方式测试它。或者您可以使用其他浏览器执行这些测试以进行确认。看看这个git问题,看看我的意思https://github.com/ariya/phantomjs/issues/10389