2013-02-21 45 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) 

我的問題是,是否有某種參數可以設置,以確保視頻不會立即在頁面請求上加載。

+0

你打算怎麼處理這些內容?如果您需要某些可從Youtub API檢索的信息,請使用API​​。 – User007 2013-02-21 21:24:19

+0

你有Python內的flash加載視頻? – JBernardo 2013-02-21 21:28:25

+0

@ User007純粹通過查找帶有'unavailable-message' ID的'h1'來解析它是否被刪除。我會研究YTAPI。 – TankorSmash 2013-02-21 21:30:14

回答

1

您的瀏覽器會在加載頁面(以及頁面引用的Flash播放器)之後,通過單獨的請求對視頻進行流式傳輸。視頻不是頁面數據本身的一部分。風格,腳本和圖像都不是。它們都只是在HTML頁面中編碼的引用,供瀏覽器解釋。

僅僅請求頁面本身不會啓動正在流式傳輸的視頻,不會。

換句話說,所有requests.get()將加載的是您的瀏覽器加載的基本HTML標記。除非您解釋該HTML標記並開始加載頁面中引用的資源,否則您將不會自動開始加載任何其他內容。

+0

好吧,所以只是頁面足夠複雜,'bs4'需要一兩秒鐘來解析它。謝謝。 – TankorSmash 2013-02-21 21:32:17

+0

@TankorSmash:確切地說。也許使用不同的底層解析器(beautifulsoup可以使用幾個,也許'lxml'會更快)。或者HTTP請求可能很慢? – 2013-02-21 21:34:45

+0

這是我第一次嘗試,但得到了一個解析錯誤,雖然我沒有足夠的重視實際的消息來嘗試解決它。 – TankorSmash 2013-02-21 21:36:18

1

如何使用網絡分析儀並查看視頻來自哪裏? 到目前爲止,我明白,所有的視頻是從一個主機名來: 例如:

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

autoplay將eather是1 - 開始彈唱或0

如果video_id不再存在,你會在屏幕上看到類似Invalid parameters的東西。

+0

這是一個非常聰明的伎倆,謝謝! – TankorSmash 2013-02-21 22:33:02

相關問題