为parse.com CloudCode获取带有XMLHttpRequest.js的html源代码

时间:2014-07-07 04:00:51

标签: javascript node.js xml-parsing xmlhttprequest parse-platform

对于Cloud Code(parse.com),我试图从其他网站上抓取网页数据,但我无法将网站的源代码作为字符串获取。

我尝试使用xmlhttprequest模块

    var url = "www.targetWebsite.com";

    var XMLHttpRequest = require("cloud/XMLHttpRequest.js").XMLHttpRequest;
    var xmlHttp = new XMLHttpRequest();

    xmlHttp.open( "GET", url, false );
    xmlHttp.send( null );
    var doc = xmlHttp.responseText;

但是,当我尝试运行代码时,出现错误Module child_process.js not found

我假设在XMLHttpRequest.js文件中引用了这一行

  var spawn = require("child_process").spawn

但是,我在下载的文件夹中找不到要添加到目录的child_process.js

有没有办法包含这个文件,还是有更好的方法来获取源代码?

编辑:使用httpRequest云功能

Parse.Cloud.define("pushFavorites", function(request, response) {

    var xpath = require("cloud/xpath.js"), dom = require("cloud/dom-parser.js").DOMParser;          
    var doc;

    Parse.Cloud.httpRequest({

       url: "website.com",
       success: function(httpResponse) {
           doc = new dom().parseFromString(httpResponse.text);
        },
      error: function(httpResponse) {
          console.error('Request failed with response code ' + httpResponse.status);
   }
});

    var cells = xpath.select("//td[starts-with(@class, 'menugridcell')]", doc);

//etc...

在声明cells变量的行上,我收到错误:Cannot read property 'nodeType' of undefined

使用console.log,httpResponse.text正确地将源代码显示为字符串。我不确定错误是与httpResponse还是我的xpath有关。我能够让xpath.select()函数适用于其他一些手动设计的xml字符串。

1 个答案:

答案 0 :(得分:2)

Parse Cloud Code不运行节点,所以当你可以让一些模块工作时,并非所有模块都可以运行。在这种情况下,我怀疑你是否能够将child_process作为核心节点模块(参见Where is child_process.js?),因此在Cloud Code中不可用。

尝试使用Parse.Cloud.httpRequest代替哪些应该能够满足您的需求。