javascript - 为什么 PhantomJS 不抓取它重定向到的页面?

标签 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)在重定向捕获后没有被调用?

最佳答案

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

关于javascript - 为什么 PhantomJS 不抓取它重定向到的页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43680877/

相关文章:

python - Scraper 无法从下一页获取名称

python - 如何一次性抓取超过 100 个谷歌页面

cookies - phantomjs - 没有为任何 XHR/POST/GET AJAX 请求发送 Cookie

javascript - 图像在窗口调整大小时调整大小

javascript - 如何用 ECMAScript 术语解释对象引用?

javascript - 过滤 HTML 表格 - Ajax

python - 无法使用 selenium 定位元素列表

javascript - 如何在 PhantomJS 中包含多个 JavaScript 库?

web-crawler - 如何使用Nightmarejs(或casperjs/phantomjs)遵循自动表单提交和重定向

javascript - localStorage.getItem ('item' ) 是否优于 localStorage.item 或 localStorage ['item' ]?