jQuery: получение / парсинг контента с разных сайтов

Я бы хотел сделать следующее: собирать новости с нескольких сайтов, разбирать их контент с помощью селекторов jQuery и показывать их на одной странице.

Как это можно было сделать с помощью jQuery?

Спасибо.


person Fuxi    schedule 21.08.2010    source источник
comment
Это во многом будет зависеть от того, как эти сайты раскрывают свои данные. Они используют API? Какой формат? Протокол? Многие вопросы, на которые нужно ответить, прежде чем на ваш вопрос станет ответ.   -  person Darin Dimitrov    schedule 21.08.2010


Ответы (6)


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

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

person Justin Ethier    schedule 21.08.2010

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

Но посмотрите здесь возможное решение: Межсайтовый скриптинг (XSS)

person Lasse Espeholt    schedule 21.08.2010
comment
Ага. Исключение: данные JSONP. Для чего-то еще вам понадобится какой-то прокси-скрипт на стороне сервера. - person Pekka; 21.08.2010

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

person Pointy    schedule 21.08.2010

Что касается javascript, вы не можете получать контент с других страниц, если они не делятся им явно с помощью API.

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

Примечание. Получение контента, принадлежащего другим, - манипулирование им без их согласия и представление как свое собственное - это приглашение к неприятностям.

person DMin    schedule 21.08.2010

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

person Moo    schedule 21.08.2010

Если веб-сайты, с которых вы пытаетесь получить новости, поддерживают RSS-канал, вы можете использовать плагины jquery, такие как jFeed, для получения RSS, а затем вы можете просто отобразить его на своем собственном веб-сайте.

хотя я бы порекомендовал вам настроить веб-сервис (в asp.net, php и т. д.), который собирает rss или очищает метатеги на нужных вам веб-сайтах, а затем использовать jquery.get (), чтобы получить все новости.

person Mouhannad    schedule 22.08.2010