Откройте веб-страницу и проанализируйте ее с помощью JavaScript
-
11-09-2019 - |
Вопрос
Я знаю, что JavaScript может открыть ссылку в новом окне, но возможно ли открыть веб-страницу, не открывая ее в окне и не отображая пользователю?Что я хочу сделать, так это проанализировать эту веб-страницу на наличие некоторого текста и использовать его в качестве переменных.
Возможно ли это без любая помощь с серверных языков?Если да, пожалуйста, направьте меня в том направлении, в котором я могу этого добиться.
Спасибо всем
Решение
Вы можете использовать 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 - jQuery - запрос или Прототип чтобы позаботиться об этом за тебя.
Однако политика одного и того же происхождения может вас огорчить...
Обратите внимание, что из-за политика одного и того же происхождения, запрашиваемая вами страница должна быть из того же домена, что и страница, отправляющая запрос.Если вы хотите запросить удаленную страницу, вам придется проксировать ее с помощью серверного скрипта.
Другим возможным обходным путем является использование Flash для выполнения запроса, который разрешает междоменные запросы, если целевой сайт предоставляет разрешение с соответствующим образом настроенным файлом crossdomain.xml.
Вот хорошая статья на тему политики одного и того же происхождения:
Другие советы
Whatever Origin - это библиотека с открытым исходным кодом, которая позволяет вам использовать исключительно Javascript для выполнения очистки.Это также решает проблему "одного и того же домена-источника".http://www.whateverorigin.org/
$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
alert(data.contents);
});
Вы бы использовали AJAX.Это сделало бы запрос Get на соответствующий URL-адрес и вернуло бы HTML-код ответа.Jquery делает это очень простым, например
$.get("test.php");
Эндрю
Вы могли бы открыть новое окно в iframe:
http://www.w3schools.com/TAGS/tag_iframe.asp
Хотя обратите внимание, что доступ к Javascript ограничен, если сайт, который вы открываете, находится по другому URL.Это делается для предотвращения атак с использованием межсайтовых скриптов: