фреймворк приложения, поддерживающий анализ DOM и межсайтовый AJAX - PullRequest
0 голосов
/ 09 июля 2011

Я хочу создать приложение, которое может получать разные веб-сайты и извлекать данные из их DOM. Я намерен использовать XMLHttpRequest в Google Web Toolkit, чтобы сделать это. Однако XMLHttpRequest, похоже, не работает из-за политики одного и того же происхождения.

Интересно, существует ли какая-либо другая прикладная среда, поддерживающая анализ DOM и межсайтовую Ajax-функцию?

Ответы [ 2 ]

0 голосов
/ 09 июля 2011

Из других доменов вы можете загружать только данные JSON. HTML или XML DOM не будут доступны из-за безопасности. В этом случае я вижу два варианта:

  1. Вы отправите запрос на сервер источника страницы, который будет перенаправлять запрос на фактический веб-сервер и, следовательно, обходить ограничение безопасности.

  2. Вы можете использовать какой-либо сервис для преобразования HTML или XML в JSON. Я знаю только http://open.dapper.net/, который это делает, но сначала вам нужно вручную определить записи на странице, чтобы он работал только с предопределенным набором страниц, а не с URL, который, например, вводит пользователь. Но, возможно, существуют конвертеры XML в JSON, которые могут конвертировать любой заданный URL. Это не будет трудно сделать.

0 голосов
/ 09 июля 2011

jquery и все различные, такие как dojo, YUI поддерживает кросс-браузерные запросы через хак.

Из-за одной и той же политики происхождения вы не можете делать ajax-запросы к другим доменам, поэтому такие запросы часто используются хаком http://en.wikipedia.org/wiki/JSONP

Демонстрация описания функциональности

Сценарий сайта 1

function MakeThirdPartyRequest()
{
     //make sure this domain returns pure json
     var Url="http://SomeOtherDomain.com"; 

      //now using javascript you add this TAG to body of html
     <script src="Url" type="text/javascript"></script>
}

    function jsonFromThirdParty(data)
{
 alert(data);
}

Сайт 2 должен возвращать данные в этом формате

jsonFromThirdParty("hello iam data from other domain");

Вы можете использовать некоторые сторонние библиотеки javascript

Ниже приведен код для выполнения междоменного запроса ajax

jQuery.ajax({
     url:'http://some_domain',
     dataType:'jsonp',
     type:'get',
     success:function(data)
    {
       alert(data);
    }
});
...