2

angularjs / javascript を使用して Web サイトをスクレイピングしようとしています。

angularjs$httpが get リクエストを作成できるオブジェクトを提供することは知っています。以前にこれを使用してjsonを取得しましたが、同じオブジェクトを使用してXML (HTML)を取得できますか? (応答は gzip を使用してエンコードされると思います)。

ありがとう!

4

2 に答える 2

2

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;
    });
}]);

于 2015-03-30T19:34:34.517 に答える
-1

$httpJSON 以外の応答データの取得にも使用できるはずです。$httpドキュメントでは、デフォルトの応答変換の 1 つが であると説明されていますIf JSON response is detected, deserialize it using a JSON parser。ただし、何か他のもの (HTML テンプレートなど) を要求する場合response.dataは、その HTML の文字列値が必要です。実際、Angular はなど$httpで使用するために HTML をプルダウンするために使用します。ngInclude

gzip (この場合は解凍) は、応答が に到達する前にブラウザで処理する必要があります$http

于 2013-10-28T19:21:51.870 に答える