Разбор строк с живого потокового сайта в Python

1

Я пытаюсь читать информацию, которая постоянно меняется с веб-сайта.

Например, скажем, я хотел прочитать имя исполнителя, которое воспроизводится на онлайн-радио-сайте. Я могу захватить имя текущего исполнителя, но когда песня изменится, обновления HTML сами, и я уже открыл файл через:

f = urllib.urlopen( "САЙТ" )

Поэтому я не вижу обновленного имени исполнителя для новой песни.

Могу ли я продолжать закрывать и открывать URL-адрес через некоторое время (1), чтобы получить обновленный код HTML или есть лучший способ сделать это? Спасибо!

  • 0
    интересный вопрос - есть ли у дескриптора f функция seek ?
Теги:
stream
urllib
live

3 ответа

1

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

Это связано с тем, что HTTP, по сути, не является потоковым протоколом. Как только вы подключитесь к серверу, он ожидает, что вы набросите на него HTTP-запрос, а затем ответит HTTP-ответ на вас, содержащий страницу. Если ваш первоначальный запрос сохранен (по умолчанию по HTTP/1.1), вы можете снова отправить тот же запрос и обновить страницу.

Что я бы рекомендовал? В зависимости от ваших потребностей, получите страницу каждые n секунд, получите нужные данные. Если сайт предоставляет API, вы можете извлечь из этого выгоду. Кроме того, если это ваш собственный сайт, вы можете реализовать коммандный стиль Ajax через HTTP и получить истинный поток.

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

1

Если вы используете urllib2, вы можете прочитать заголовки, когда будете делать запрос. Если сервер отправляет обратно "304 Not Modified" в заголовках, содержимое не изменилось.

0

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

Некоторые сайты предоставляют дополнительный API, включая длительный опрос. Посмотрите документацию на сайте или спросите их разработчиков, есть ли у них.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню