Использование JQuery для получения HTML-кода с другого сайта: возможно? Правовой? - PullRequest
9 голосов
/ 14 декабря 2011

Я пытаюсь получить HTML-код с веб-страницы, которая не находится в том же домене.HTML-текст анализируется и суммирует рецепт (название рецепта, основные ингредиенты, количество шагов), найденный на той странице, с которой был HTML-код.

Затем пользователь может щелкнуть ссылку и перейти на эту веб-страницу за пределамидомен для просмотра рецепта.

Мне известна политика одного и того же происхождения, но применимо ли это к получению HTML-кода с веб-страницы за пределами внутреннего домена?Я представляю, что это точно так же, как получение XML, так что это законно и разрешено, не так ли?

Есть ли способ получить текст / код HTML из домена за пределами моего внутреннего домена?

Используя Javascript & JQuery, идея состоит в том, чтобы ограничить количество запросов и хранилищ сервера, заставляя пользователя выполнять запросы для каждого рецепта и анализируя HTML на стороне клиента.Это устраняет узкие места на стороне сервера, а также означает, что мне не нужно проходить через сервер и удалять старые устаревшие описания рецептов.

Я открыт для решений / предложений на любом языке программирования или API или т. Д.

Ответы [ 5 ]

9 голосов
/ 14 декабря 2011

То, что вы пытаетесь сделать, невозможно сделать с помощью какой-либо библиотеки AJAX. Междоменная политика браузеров не позволяет вам делать это.

Но вы можете сделать это с помощью комбинации php (или любого другого серверного языка) и AJAX. Создайте скрипт php, как этот:

<?php
    $url=$_POST['url'];
    if($url!="")
        echo file_get_contents($url);
?>

Допустим, имя сценария fetch.php. Теперь вы можете бросить вызов AJAX из вашего кода jQuery в этот fetch.php, и он получит HTML-код для вас.

3 голосов
/ 14 декабря 2011

Нет, это не будет работать из клиентского JavaScript.Браузер предотвращает это по соображениям безопасности.Вам нужно будет выполнить ajax-вызовы локального серверного сценария (например, PHP), который затем извлечет содержимое (например, через cURL) и вернет нужный вам HTML.

2 голосов
/ 14 декабря 2011

Чтобы добавить что-то к уже полученным ответам, я могу вам сказать, что html не предназначен для использования в качестве способа передачи данных «как услуга».Для этой цели есть XML или JSON, выставленные через SOAP или REST.

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

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

Если автор контента хочет, чтобы его можно было повторно использовать за пределами своего сайта, он может выразить это намерение следующим образом:сделать неформатированный контент доступным через службу или канал RSS / Atom.

1 голос
/ 14 декабря 2011

То же происхождение применяется.Попробуйте этот код, и вы столкнетесь с ошибкой безопасности

$.get("other web page site", {}, function(content){
   $("#receipe").html(content)
}, "html")

Кстати, вы, скорее всего, нарушите закон об авторском праве, так что будьте осторожны;

0 голосов
/ 14 декабря 2011

Я не уверен, считается ли это чистым решением javascript, но: http://developer.yahoo.com/yql/ может помочь вам с тем, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...