2013-10-28 61 views
2

我试图使用angularjs/javascript来抓取网站。

我知道angularjs提供了一个$http对象,我可以用它来获取请求。我以前用这个来获取json,我可以使用相同的对象来获得XML(HTML)吗? (我相信这个回应将使用gzip编码)。

谢谢!

回答

-1

您应该可以使用$http获取JSON以外的响应数据。 $http documentation解释其中一个默认响应转换为If JSON response is detected, deserialize it using a JSON parser。但是,如果您请求其他内容(例如HTML模板),response.data应该具有该HTML的字符串值。事实上角使用$http拉低HTML为使用ngInclude

gzip数据(或在这种情况下,解压缩)应该由浏览器的响应到达之前$http处理。

+0

如果你期待'success'回调中传递的参数与天然'了'responseXML'财产XMLHttpRequest'基于响应头的文件扩展名或MIME ,它不是。 –

2

通过$httpProvider获取xml文件不会将响应数据以DOM的形式传递到回调中。

使用下面的示例作为模式,并在旧的IE客户端中使用DOMParser或适当的ActiveX对象转换返回的文本。

exampleModule = angular.module('exampleModule', []); 
 
exampleController = exampleModule.controller('exampleController', ['$scope', '$http', function ($scope, $http) { 
 
    $http.get("example.xml").then(function (response) { 
 
     var dom; 
 
     if (typeof DOMParser != "undefined") { 
 
      var parser = new DOMParser(); 
 
      dom = parser.parseFromString(response.data, "text/xml"); 
 
     } 
 
     else { 
 
      var doc = new ActiveXObject("Microsoft.XMLDOM"); 
 
      doc.async = false; 
 
      dom = doc.loadXML(response.data); 
 
     } 
 
     // Now response is a DOMDocument with childNodes etc. 
 
     return dom; 
 
    }); 
 
}]);

相关问题