2013-02-21 3 views
0

동영상을 스트리밍하려고 시도하는지 실제로 확신 할 수 없습니다. YouTube 페이지를 구문 분석하기 위해 정상보다 몇 초 오래 걸립니다.동영상을 스트리밍하지 않고 Youtube 페이지를 검색하는 방법은 무엇인가요?

임의의 Youtube 비디오 페이지를 구문 분석하여 제거 여부를 확인하고 있으며 비디오 자체 만로드되는지 확인하려고합니다. 나는 그것을 완료하는 것이 잠시 걸리는 것만 작품, 다음 코드있어

import requests, bs4 

url = 'https://www.youtube.com/watch?v=XYZ' 
parameters = {'magic_var' : 'no_load'} 
r = requests.get(url, params=parameters) 
soup = bs4.BeautifulSoup(r.content) 

(I 비디오가 느려하는로드 시작 있으리라 믿고있어를하지만 확인하기 위해 테스트하지 않았습니다) 제 질문은 비디오가 페이지 요청에서 즉시 로딩을 시작하지 않도록 설정할 수있는 매개 변수가 있는지 여부입니다.

+0

콘텐츠로 무엇을 할 예정입니까? Youtub API에서 검색 할 수있는 특정 정보가 필요하면 API를 사용하십시오. – User007

+0

비디오를로드하려면 파이썬 안에 플래시가 있습니까 ??? – JBernardo

+0

@ User007은'unavailable-message' id로'h1'을 찾음으로써 그것이 제거되었는지 아닌지를 순수하게 파싱합니다. 나는 YTAPI를 살펴볼 것이다. – TankorSmash

답변

1

브라우저은 페이지 (및 페이지에서 참조하는 플래시 플레이어)를로드 한 후 별도의 요청으로 비디오를 스트리밍합니다. 동영상은 페이지 데이터 자체에 포함되어 있지 않습니다. 스타일, 스크립트 및 이미지도 아닙니다. HTML 페이지에서 인코딩 된 참조만으로 브라우저가 해석 할 수 있습니다.

페이지 자체 만 요청하면 스트리밍중인 동영상이 시작되지 않습니다.

즉, 브라우저가로드되는 기본 HTML 마크 업은 모두 requests.get()입니다. 해당 HTML 마크 업을 해석하지 않고 페이지에서 참조하는 리소스를로드하지 않으면 다른 어떤 것도 자동으로로드되지 않습니다.

+0

좋아요, 그래서 페이지가 복잡하기 때문에'bs4 '는 그것을 분석하는데 두번째 또는 두번째가 걸립니다. 감사. – TankorSmash

+0

@ TankorSmash : 정확히. 아마 다른 기본 파서 (beautifulsoup는 여러 개를 사용할 수 있습니다. 아마'lxml'가 더 빨라질 것입니다)를 사용하십시오. 아니면 HTTP 요청이 느린 것일까 요? –

+0

그것이 처음 시도한 것이지만 구문 분석 오류가 발생했습니다. 실제 메시지에 충분히주의를 기울이지 않아도 해결할 수 있습니다. – TankorSmash

1

네트워크 분석기를 사용하고 비디오의 출처를 확인하는 것은 어떻습니까? , 놀 시작 또는 0

video_id가 더 이상 존재하지 않는 경우 -

s.ytimg.com/yt/swfbin/watch_as3.swf?video_id=YOUR_VIDEO_ID&autoplay=1 

autoplay이 eather 것 1 : 예 : 지금까지 나는 모든 비디오는 하나의 호스트 이름에서 오는 없는지 이해 화면에 Invalid parameters과 같은 내용이 표시됩니다.

+0

그건 아주 똑똑한 속임수 야, 고마워! – TankorSmash

관련 문제