angularjs / javascript を使用して Web サイトをスクレイピングしようとしています。
angularjs$http
が get リクエストを作成できるオブジェクトを提供することは知っています。以前にこれを使用してjsonを取得しましたが、同じオブジェクトを使用してXML (HTML)を取得できますか? (応答は gzip を使用してエンコードされると思います)。
ありがとう!
angularjs / javascript を使用して Web サイトをスクレイピングしようとしています。
angularjs$http
が get リクエストを作成できるオブジェクトを提供することは知っています。以前にこれを使用してjsonを取得しましたが、同じオブジェクトを使用してXML (HTML)を取得できますか? (応答は gzip を使用してエンコードされると思います)。
ありがとう!
xml ファイルを取得して$httpProvider
も、応答データが DOM の形式でコールバックに渡されません。
以下の例をパターンとして使用DOMParser
し、古い IE クライアントの または適切な 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;
});
}]);
$http
JSON 以外の応答データの取得にも使用できるはずです。$http
ドキュメントでは、デフォルトの応答変換の 1 つが であると説明されていますIf JSON response is detected, deserialize it using a JSON parser
。ただし、何か他のもの (HTML テンプレートなど) を要求する場合response.data
は、その HTML の文字列値が必要です。実際、Angular はなど$http
で使用するために HTML をプルダウンするために使用します。ngInclude
gzip (この場合は解凍) は、応答が に到達する前にブラウザで処理する必要があります$http
。