Соскоб сайта с использованием jquery и ajax - PullRequest
15 голосов
/ 20 декабря 2009

Я хочу иметь возможность манипулировать html данного URL. Что-то вроде html соскоба. Я знаю, что это можно сделать, используя curl или некоторую библиотеку очистки. Но я хотел бы знать, возможно ли использовать jquery для выполнения запроса get к URL-адресу с помощью ajax и получения html-адреса url, а также для запуска кода jquery на HTML вернулся?

Спасибо

Ответы [ 6 ]

8 голосов
/ 17 февраля 2010

Я хотел бы отметить, что существуют ситуации, когда вполне приемлемо использовать jQuery для очистки экранов между доменами. Гаджеты боковой панели Windows запускаются в «зоне локального компьютера», которая позволяет создавать междоменные сценарии.

И у jQuery есть возможность применять селекторы для получения html-контента. Вам просто нужно добавить селектор в параметр url метода load () после пробела.

Пример кода гаджета ниже проверяет эту страницу каждый час и сообщает общее количество просмотров.

<html>
<head>
    <script type="text/javascript" src="jquery.min.js"></script>
    <style>
        body { 
            height: 120px;
            width: 130px;
            background-color: white;
        };
    </style>
</head>

<body>
Question Viewed:
<div id="data"></div>

<script type="text/javascript">

    var url = "/1160896/soskob-saita-s-ispolzovaniem-jquery-i-ajax"

    updateGadget();

    inervalID = setInterval("updateGadget();", 60 * 1000);

    function updateGadget(){

        $(document).ready(function(){
            $("#data").load(url + " .label-value:contains('times')");
        });

    }

</script>

</body>
</html>
4 голосов
/ 20 декабря 2009

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

Решением будет:

  • есть какой-то "прокси" на вашем собственном сервере,
  • отправьте запрос Ajax на этот прокси,
  • , который, в свою очередь, извлечет страницу на другом доменном имени; и верните его в свой код JS в ответ на запрос Ajax.

Это можно сделать в несколько строк практически с любым языком (например, PHP, например, с помощью curl) ... Или вы можете использовать некоторые функции своего веб-сервера (см., например, mod_proxy и mod_proxy_http для Apache)

3 голосов
/ 29 октября 2012

Это не так сложно.

$(document).ready(function() {
  baseUrl = "http://www.somedomain.com/";
  $.ajax({
    url: baseUrl,
    type: "get",
    dataType: "",
    success: function(data) {
      //do something with data
    }
  });
});

Я думаю, это может дать вам хорошую подсказку - http://jsfiddle.net/skelly/m4QCt/

1 голос
/ 20 декабря 2009

http://www.nathanm.com/ajax-bypassing-xmlhttprequest-cross-domain-restriction/

Единственная проблема заключается в том, что из-за безопасности как в Internet Explorer, так и в FireFox объекту XMLHTTPRequest не разрешается делать кросс-доменные, кросс-протокол или кросс-портовые запросы.

0 голосов
/ 02 марта 2012

Я делаю это с помощью небольшого прокси-сервера PHP, который временно удаляет теги IMG для ускорения загрузки. Я обернул его в плагин jQuery, который делает его относительно простым в использовании, см. здесь для ссылки demo / github

0 голосов
/ 20 декабря 2009

Вместо скручивания вы можете использовать инструмент типа Selenium , который автоматизирует загрузку страницы в браузере. С его помощью вы можете запустить JavaScript.

...