Подтвердить что ты не робот

Откройте веб-страницу и проанализируйте ее с помощью JavaScript

Я знаю, что JavaScript может открыть ссылку в новом окне, но можно ли открыть веб-страницу, не открывая ее в окне или не отображая ее пользователю? То, что я хочу сделать, - это проанализировать эту веб-страницу для некоторого текста и использовать ее в качестве переменных.

Возможно ли это без помощи со стороны сервера? Если да, пришлите меня в направлении, которое я могу достичь.

Спасибо всем

4b9b3361

Ответ 1

Для этого вы можете использовать объект XMLHttpRequest. Здесь простой пример

var req = new XMLHttpRequest();  
req.open('GET', 'http://www.mydomain.com/', false);   
req.send(null);  
if(req.status == 200)  
   dump(req.responseText);

После загрузки вы можете выполнить ваш синтаксический анализ/очистку, используя регулярные выражения javascript в члене req.responseText.

Подробнее...

На практике вам нужно сделать немного больше, чтобы получить объект XMLHttpRequest в кросс-платформенном режиме, например:

var ua = navigator.userAgent.toLowerCase();
if (!window.ActiveXObject)
  req = new XMLHttpRequest();
else if (ua.indexOf('msie 5') == -1)
  req = new ActiveXObject("Msxml2.XMLHTTP");
else
  req = new ActiveXObject("Microsoft.XMLHTTP");

Или используйте библиотеку...

В качестве альтернативы, вы можете сэкономить все усилия и просто использовать библиотеку, например jQuery или Prototype, чтобы позаботиться об этом для вас.

Политика одного и того же происхождения может укусить вас, хотя...

Обратите внимание, что из-за политики одного и того же происхождения запрашиваемая страница должна быть от того же домена, что и страница, задающая запрос. Если вы хотите запросить удаленную страницу, вам потребуется прокси-сервер, который с сервера script.

Другим возможным обходным путем является использование Flash для запроса, что позволяет междоменные запросы, если целевой сайт предоставляет разрешение с соответствующим образом сконфигурированным файлом crossdomain.xml.

Вот хорошая статья о политике того же происхождения:

Ответ 2

Независимо от происхождения - это библиотека с открытым исходным кодом, которая позволяет использовать чисто Javascript для очистки. Он также решает проблему "того же домена". http://www.whateverorigin.org/

$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
    alert(data.contents);
});

Ответ 3

Вы бы использовали AJAX. Это сделает запрос Get к рассматриваемому URL-адресу и вернет ответ HTML. JQuery делает это очень легко, например.

$.get("test.php");

http://docs.jquery.com/Ajax

Эндрю

Ответ 4

Вы можете открыть новое окно в iframe:

http://www.w3schools.com/TAGS/tag_iframe.asp

Хотя обратите внимание, что доступ к Javascript ограничен, если сайт, который вы открываете, отличается от другого URL-адреса. Это делается для предотвращения атак межсайтового скриптинга:

http://en.wikipedia.org/wiki/Cross-site_scripting

Ответ 5

Вы можете попробовать использовать fetch и callback

fetch('https://api.codetabs.com/v1/proxy?quest=google.com').then((response) => response.text()).then((text) => console.log(text));