2012-05-21 4 views
2

Очевидно, что его изменение не могло быть и речи.Можно ли читать структуру другого url?

Но вы думаете, что просто читать его не должно быть проблемой?

Если у меня есть мой .js, работающий на чьей-то системе, и я хочу проанализировать DOM другого URL-адреса, на стороне клиента, есть ли способ сделать это?

Что-то простое, как вытащить тег заголовка или вытащить URL-адрес ... возможно, загрузите сайт в iframe, чтобы выполнить это?

+3

Если вы спрашиваете, можете ли вы проверить DOM документа в другом источнике, то нет. Это позволит краже пользовательских данных в формах или просто использоваться в тексте. –

+1

Такая же политика происхождения предотвращает это. Вы можете взглянуть на http://stackoverflow.com/questions/3076414 – Mic

+0

Почему вы хотите сделать это с помощью веб-клиента, а не на серверной программе, например, на гусеничном/бот-сервере? – Tharabas

ответ

4

Если я получаю свой вопрос прямо,

Поперечное пример домена с помощью YQL,

var url = 'xyz.com'; // website you want to scrape 
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '"') + '&format=json&callback=?'; 
$.getJSON(yql,function(data){ 
    if (data.results[0]){ 
     console.log(data = data.results[0].replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')); // The scraped data (the whole webpage) 
    } 
}); 

Справка: How can i get Equivalent method of HttpwebRequest in javascript

+0

Что такое yql? это выглядит круто .. что он делает? –

+0

yahoo query language ... Я googled вне .. вы можете просто дать мне краткий обзор? –

+0

какой-то yahoo api, который делает синтаксический анализ для вас? –

1

Если домены не совпадают, вы не сможете этого сделать из-за исключения безопасности. Если вы контролируете другой домен, вам следует исследовать добавление файла кросс-домена, чтобы разрешить доступ через javascript.

+0

А как насчет ответа Гейба? –

+0

Я не вижу ответа Габи. –

+1

@SteveBinder: он был удален. –

1

Вы можете получить источник html с помощью запроса AJAX GET. То вы можете найти в HTML код или назначить его на iframe/...

+3

Не, если URL-адрес из другого домена. –

+0

О, да, вы правы, я не рассматривал политику – Marduk

3

Вы можете сделать это с помощью xmlhttp

function getSourceAsDOM(url) 
{ 
    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.open("GET",url,false); 
    xmlhttp.send(); 
    parser=new DOMParser(); 
    return parser.parseFromString(xmlhttp.responseText,"text/html");  
} 
Смежные вопросы