保存使用casperjs抓取网页时获得的表格数据

时间:2013-09-22 15:09:53

标签: javascript mysql json phantomjs casperjs

哪个是保存使用casperjs抓取网页时获得的表格数据的最佳方法?

  1. 使用json对象并在序列化后将其存储为文件。

  2. 对php使用ajax请求,然后将其存储在mysql数据库中。

2 个答案:

答案 0 :(得分:5)

我只使用第二种情况:

首先:获取存储在globalInfo变量中的信息

var globalInfo;
casper.thenOpen("www.targetpage.cl/valuableInfo", function() {
    globalInfo = this.evaluate(function(){
       var domInfo = {};
       domInfo.title = "this is the info";
       domInfo.body  = "scrap in the dom for info";
       return domInfo;
   });
});

第二:访问页面以存储捕获的数据

casper.then(function(){
   casper.thenOpen("www.mipage.com/saveIntheDBonPost.php", {
      method: 'post',
      data:{              
          'title': ''+globalInfo.title,
          'body': ''+globalInfo.body
      }
   });
});

www.mipage.com/saveIntheDBonPost.php获取$_POST参数中的数据并将其存储到数据库中。

答案 1 :(得分:2)

为简单起见,将CasperJS视为一种获取数据的方法。用另一种语言处理它。我会选择#1选项 - 以JSON格式获取数据,并将其保存到文件中以便以后再进行操作。

为此,您可以使用PhantomJS提供的File System API。您还可以将此与CasperJS's cli interface结合使用,以允许您将参数传递给脚本(例如,要写入的临时文件)。

处理所有这些的脚本如下所示:

  1. 获取临时文件路径(Linux系统上的mktemp)。
  2. 调用CasperJS脚本,将该临时文件路径作为参数传递。
  3. 获取您的数据,使用File System API将其写入该文件,然后退出。
  4. 读入文件,使用它(保存到数据库等),删除临时文件。