инфраструктура приложения, поддерживающая синтаксический анализ DOM и межсайтовый ajax

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

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


person Chan Le    schedule 09.07.2011    source источник


Ответы (2)


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

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

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

person okrasz    schedule 09.07.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);
    }
});
person Praveen Prasad    schedule 09.07.2011