Возможно ли получить доступ к другим веб-страницам с другой страницы? - PullRequest
1 голос
/ 27 октября 2009

По сути, я пытаюсь создать небольшой скрипт, который обращается к самой последней заметке на форуме и извлекает из нее текст или изображение. У меня это работает в Python, используя модуль htmllib и некоторые регулярные выражения. Но сценарий все еще не очень удобен, и было бы намного лучше, если бы я мог как-то поместить его в HTML-документ. Похоже, что простое встраивание сценариев Python невозможно, поэтому я смотрю, есть ли похожая функция, например, python htmllib, которую можно использовать для доступа к какой-либо другой веб-странице и извлечения из нее некоторой информации.

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

Я почти уверен, что javascript не обладает необходимой мне функциональностью, но мне было интересно узнать о других языках, таких как jQuery, или даже о чем-то вроде AJAX?

Ответы [ 3 ]

3 голосов
/ 27 октября 2009

Как упоминает Грег, решение Ajax не будет работать "из коробки" при попытке загрузки с удаленных серверов.

Если, однако, вы пытаетесь загрузить с того же сервера , это должно быть довольно просто. Я представляю этот ответ, чтобы показать, как это можно сделать с помощью jQuery всего за несколько строк кода.

<div id="placeholder">Please wait, loading...</div>

<script type="text/javascript" src="/path/to/jquery.js">
</script>
<script type="text/javascript>
$(document).ready(function() {
    $('#placeholder').load('/path/to/my/locally-served/page.html');
});
</script>

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

Вот документы по методу jQuery load: http://docs.jquery.com/Ajax/load

Следует отметить еще одну приятную особенность, которая заключается в частичной загрузке страницы. Например, предположим, что ваша удаленная страница представляет собой полноценный HTML-документ, но вам нужно только содержимое одного элемента div на этой странице. Вы можете передать селектор методу load, как в моем примере выше, и это еще больше упростит вашу задачу. Например,

$('#placeholder').load('/path/to/my/locally-served/page.html #someTargetDiv');

Удачи!
- Майк

1 голос
/ 27 октября 2009

Существует два основных подхода:

  • Измените код Python так, чтобы он работал как модуль CGI (или WSGI или любой другой), и сгенерируйте интересующую страницу, запустив некоторый серверный код.
  • Используйте Javascript с jQuery для загрузки интересующего контента, запустив некоторый код на стороне клиента .

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

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

0 голосов
/ 27 октября 2009

Вы можете встроить Python. Самый простой способ - использовать модуль cgi . Если скрипт будет часто запускаться и вы используете Apache, было бы более эффективно использовать mod_python или mod_wsgi . Вы даже можете использовать Python-фреймворк, такой как Django и кодировать весь сайт на Python.

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

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