3

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

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

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

4

2 回答 2

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参数中的数据并将其存储到数据库中。

于 2013-12-11T21:11:22.527 回答
2

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

为此,您可以使用 PhantomJS 提供的文件系统 API。您还可以将其与CasperJS 的 cli 接口结合使用,以允许您将参数传递到脚本(例如要写入的临时文件)。

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

  1. 获取临时文件路径(mktemp在 linux 系统上)。
  2. 调用您的 CasperJS 脚本,将该临时文件路径作为参数传递。
  3. 获取您的数据,使用文件系统 API 将其写入该文件,然后退出。
  4. 读入文件,使用它(保存到数据库等),删除临时文件。
于 2013-09-30T15:14:46.877 回答