2011-04-30 3 views
1

나는 웹 사이트에서 끊임없이 변화하는 정보를 읽으려고합니다.Python의 라이브 스트리밍 웹 사이트에서 행을 구문 분석

예를 들어 온라인 라디오 사이트에서 재생중인 아티스트 이름을 읽고 싶다고 가정 해 보겠습니다. 나는 현재 작가의 이름을 잡을 수 있지만 때 노래 변경되면 HTML 업데이트 자체가 이미를 통해 파일을 연 :

F = urllib.urlopen ("사이트")

그래서 내가 할 수있는 ' 새 노래의 업데이트 된 아티스트 이름을 확인하십시오.

업데이트 된 HTML 코드를 얻기 위해 while (1) 루프에서 URL을 닫고 열어 두거나 더 좋은 방법이 있습니까? 감사!

+0

흥미로운 질문 - f 핸들에'seek' 함수가 있습니까? – tMC

답변

1

주기적으로 웹 사이트를 다시 다운로드해야합니다. 서버에서 너무 힘들어지기 때문에 끊임없이하지 마십시오.

사실상 HTTP는 스트리밍 프로토콜이 아니기 때문입니다. 일단 서버에 연결하면 HTTP 요청을 던질 것으로 예상하고 페이지가 포함 된 HTTP 응답을 다시 보냅니다. 초기 요청이 keep-alive (기본값은 HTTP/1.1) 인 경우 동일한 요청을 다시 던져 페이지를 최신 상태로 만들 수 있습니다.

내가 권하고 싶은 것은? 필요에 따라 페이지를 n 초마다 얻고 필요한 데이터를 얻으십시오. 사이트에서 API를 제공하는 경우이를 활용할 수 있습니다. 또한 자신의 사이트 인 경우 HTTP를 통해 혜성 스타일의 Ajax를 구현하고 진정한 스트림을 얻을 수 있습니다.

다른 사람의 페이지 인 경우 사이트에서 Javascript를 통해 Ajax를 사용하여 최신으로 유지할 수 있습니다. 이는 업데이트를 야기한 다른 요청이 있다는 것을 의미하며 데이터를 얻기 위해 어떤 요청을해야하는지 파악하기 위해 웹 사이트를 해부해야 할 수 있습니다.

0

예, 올바른 방법입니다. 웹에서 변경 사항을 얻으려면 매번 새로운 쿼리를 보내야합니다. 라이브 AJAX 사이트는 내부적으로 정확히 동일합니다.

일부 사이트는 긴 폴링을 포함하여 추가 API를 제공합니다. 사이트의 문서를 찾거나 개발자에게 물어보십시오.

1

urllib2를 사용하는 경우 요청할 때 헤더를 읽을 수 있습니다. 서버가 헤더에 "304 Not Modified"를 전송하면 내용은 변경되지 않습니다.