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

StackOverflow https://stackoverflow.com/questions/597907

Вопрос

Я знаю, что 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");

http://docs.jquery.com/Ajax

Эндрю

Вы могли бы открыть новое окно в iframe:

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top