使用基于浏览器的模板引擎从站点抓取数据

时间:2013-08-13 10:53:37

标签: node.js jsdom

尝试从page中删除带有大量JS的浏览器模板中的数据。当使用 jsdom 播放无法获取任何数据时,页面可能没有足够的时间来加载或渲染。 在这种情况下如何废弃数据:使用计时器或按request

下载所有页面
jsdom.env({
  url: link,
  scripts: ["http://code.jquery.com/jquery.js"],
  done: function (errors, window) {
    var $ = window.$;
    var date = $('.date').text();
    console.log(date);
  }
});

1 个答案:

答案 0 :(得分:3)

我的一位同事有一个基于PhantomJS的项目:https://github.com/vmeurisse/phantomCrawl

他有一个简单的例子,看起来很像你的代码片段:

'use strict';

var PhantomCrawl = require('./src/PhantomCrawl');

var urls = [];

urls.push('http://www.bing.com');
var ptc = new PhantomCrawl({
    urls: urls,
    nbThreads: 4,
    crawlerPerThread: 4,
    maxDepth: 1
});

urls是要抓取的网址列表。

nbThreads是PhantomJS启动的实例数。

crawlerPerThread是每个PhantomJS实例并行抓取的页数。

maxDepth是当前抓取的网页跟随网页中的链接的次数。