Использование JQuery для получения HTML с другого сайта: возможно? Законно?

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

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

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

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

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

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

5 ответов


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

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

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

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


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


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

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

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

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


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

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

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


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