首页 > 解决方案 > 网页抓取幻影js的问题?

问题描述

我正在尝试使用phantom.js从网页中抓取 html,但后来出现了这个奇怪的错误。当我运行脚本一次时,我得到了正确的响应,但是当我再次尝试时,我没有得到任何响应。

看起来它永远在加载。我不想打电话phantom.exit(),因为它会停止服务器。那么,我可能做错了什么?

var page = require('webpage').create(),
    server = require('webserver').create();

var service = server.listen(8003, function (request, response) {

    console.log('Request received at ' + new Date());

    // TODO: parse `request` and determine where to go
    page.open('https://www.sportpesa.co.ke/?sportId=1&league=76080&leagueName=la%20liga&top=0',function() {
        setTimeout(function() {
            var test = page.plainText
            console.log(page.plainText);
            response.write(page.plainText)
            response.close();
            page.close();
        })
    })

});

标签: javascriptphantomjs

解决方案


我认为您的问题是您在第一次之后关闭页面,然后尝试再次重用它。根据文档,您不应该这样做

关闭页面并释放与其关联的内存堆。调用后不要使用页面实例。

尝试page根据每个请求重新创建对象,如下所示:

var webpage = require('webpage'),
    server = require('webserver').create();

var service = server.listen(8003, function (request, response) {

    console.log('Request received at ' + new Date());

    let page = webpage.create()
    
    // TODO: parse `request` and determine where to go
    page.open('https://www.sportpesa.co.ke/?sportId=1&league=76080&leagueName=la%20liga&top=0',function() {
        setTimeout(function() {
            var test = page.plainText
            console.log(page.plainText);
            response.write(page.plainText)
            response.close();
            page.close();
        })
    })

});


推荐阅读