0

ビデオをストリーミングしようとしているかどうかは実際にはわかりません。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)

私の質問は、ページリクエストでビデオの読み込みがすぐに開始されないようにするために設定できるパラメータがあるかどうかです。

4

2 に答える 2

1

ブラウザーは、ページ (およびページが参照するフラッシュ プレーヤー) を読み込んだ後、別の要求でビデオをストリーミングします動画はページ データ自体の一部ではありません。スタイル、スクリプト、画像もそうではありません。これらはすべて、ブラウザが解釈できるように HTML ページにエンコードされた単なる参照です。

ページをリクエストするだけでは、ビデオのストリーミングは開始されません。

言い換えれば、requests.get()ブラウザがロードする基本的な HTML マークアップだけがロードされます。次に、その HTML マークアップを解釈して、ページで参照されているリソースの読み込みを開始しない限り、他のものの読み込みを自動的に開始することはありません。

于 2013-02-21T21:27:16.747 に答える
1

ネットワーク アナライザーを使用して、ビデオがどこから来ているかを調べてみませんか? これまでのところ、すべてのビデオが 1 つのホスト名から来ていることを理解しています: 例:

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

autoplayeather は 1 - 再生を開始するか 0 になります。

video_idが存在しない場合はInvalid parameters、画面に次のようなものが表示されます。

于 2013-02-21T22:28:14.770 に答える