2016-07-16 17 views
1

Wie kann ich einen Screenshot der Flash-Website in Python 3.5.1. Ich versuche so etwas, aber ich kann kein Videobild sehen.Screenshot von Flash-Element in Python

from selenium import webdriver 

def webshot(url, filename): 
    browser = webdriver.PhantomJS() 
    browser.get(url) 
    browser.save_screenshot(filename) 
    browser.quit() 

webshot('https://www.youtube.com/watch?v=YQHsXMglC9A', 'screentest.png') 
+0

Haben Sie einen anderen Browser WebDriver versucht? Z.B. Chrom? –

+0

Es funktioniert nicht. Nur PhantomJS funktioniert. : / – Joozty

Antwort

1

Kurzfassung: Mit Youtube-System, wenn Sie nicht diese Taste drücken "Play" (Wiedergabe initiieren) gibt es kein Video serviert. Wenn Sie die Seite über den Browser laden, können Sie auch die Wiedergabe starten. Die Verwendung eines webshot erfüllt jedoch nicht die Anforderungen des Youtube-Servers, so dass es nicht funktioniert.

lange Version:

Wie kann ich einen Screenshot von einer Flash-Website ... Ich habe versucht, aber ich kann nicht Videobild sehen.
webshot('https://www.youtube.com/watch?v=YQHsXMglC9A', 'screentest.png')

Sie können Youtube Video-Player-Inhalte wie Screenshot. Die Funktionsweise von Youtube ist, dass wenn eine Videoseite fertig ist, auf eine andere PHP-Datei zugegriffen wird, um den Video-Link zu bestimmen (zB: die richtige Datei für ausgewählte Qualitätseinstellungen, etc.). Grundsätzlich muss man so aussehen wie ein Browser, der eine HTTP-Anfrage an seine Server stellt. Ihr Server gibt ein temporäres Token für den Zugriff auf die Videoverbindung, bis das Token abgelaufen ist usw. Es gibt noch andere Probleme, wie CORS. Diese Dinge werden nicht von Ihrem Werkzeug erledigt.

Wenn nur Youtube eine normale <video tag> mit einfachen MP4-Link verwendet, dann würde Ihr Code funktioniert haben.

Das Beste, was Sie ist wie unten bekommen kann (wie es keine Kontrollen ist?) Mit:

webshot('https://www.youtube.com/embed/YQHsXMglC9A', 'screentest.png')