【问题标题】:How to use phantomjs in node-js environment for dynamic-page web scraping?如何在 node-js 环境中使用 phantomjs 进行动态页面网页抓取?
【发布时间】:2016-07-24 12:38:27
【问题描述】:

我正在为完成一些任务而进行网络抓取。

我使用 node-js 请求模块进行页面抓取。

它运行良好,非常适合 cookie-session 等。

但在渲染 使用某些 javascript 框架构建的动态页面(如 ANGULARBACKBONE 等)时它会失败。

我正在尝试让 phantomjs 克服这个问题,因为我在 google 上发现遇到这种情况很有帮助。

我还为 phantomjs phantom 找到了一个 nodejs 桥

有了 phantomjs 和这个桥接模块,我只能做同样的事情了。

var phantom = require('phantom');
var fs = require('fs');

var sitepage = null;
var phInstance = null;
phantom.create()
    .then(instance => {
        phInstance = instance;
        console.log("Instance created");
        return instance.createPage();
    })
    .then(page => {
        sitepage = page;
        console.log("createing page");
        return page.open('https://paytm.com/shop/p/carrier-estrella-plus-1-5-ton-3-star-window-ac-LARCARRIER-ESTRPLAN5550519593A34?src=grid&tracker=%7C%7C%7C%7C%2Fg%2Felectronics%2Flarge-appliances%2F1-5-ton-3-star-ac-starting-at-rs-22699%7C88040%7C1');
    })
    .then(status => {
        //console.log(status);
        console.log("getting content of page");
        return sitepage.property('content');
    })
    .then(content => {
      console.log("success");
        //console.log(content);
        fs.writeFile("ok.text", content);
        sitepage.close();
        phInstance.exit();
    })
    .catch(error => {
      console.log("errr");
        //console.log(error);
        phInstance.exit();
    });

上面是我正在尝试加载使用角度框架构建的动态网站页面之一的代码。

谁能指导我在上面的代码中我缺少正确的东西。

【问题讨论】:

  • 我没有遇到任何问题。或任何错误。我只是想知道用js框架构建的热门废弃网页
  • 那就具体问吧。 But it fails when time comes to render Dynamic pages 怎么会失败?有哪些错误?只是目前您的要求太宽泛,我们无法帮助您。 “如何抓取动态网站?嗯……使用 PhantomJS”
  • @Vaviloff 能否请您帮忙并添加示例如何使用它的答案
  • 嗨,你解决了吗?

标签: javascript node.js web-scraping request phantomjs


【解决方案1】:

您在动态代码运行之前获取页面的内容,您需要等待加载完成。

page.open 后面的块需要等待页面完成,如果有一个你知道从后端获取的元素,你可以等待那个元素(参见 phantomjs 文档中的 waitfor 示例)。

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多