Heim >Backend-Entwicklung >Python-Tutorial >Verwenden von Python zum Implementieren des Beispielcodes für die Video-Download-Funktion
Das Kurzvideogeschäft boomte in den letzten ein oder zwei Jahren und jede Video-Website verfügt über ihre eigenen, einzigartigen Kurzvideoinhalte. Es wäre großartig, wenn es ein Programm gäbe, mit dem Sie die neuesten Videos herunterladen könnten, die von beliebten Benutzern großer Video-Websites veröffentlicht wurden. Das wäre nicht nur bequem anzusehen, sondern Sie könnten auch urheberrechtsfreie Videos auf persönlichen Social-Networking-Sites veröffentlichen, um Ihre Reichweite zu steigern Beliebtheit
Das Kurzvideogeschäft boomte in den letzten ein oder zwei Jahren und jede Video-Website verfügt über ihren eigenen, einzigartigen Kurzvideoinhalt. Wäre es nicht schön, wenn es ein solches Programm gäbe, mit dem Sie die neuesten Videos, die von beliebten Benutzern großer Video-Websites veröffentlicht wurden, nicht nur bequem ansehen, sondern auch urheberrechtsfreie Videos in persönlichen sozialen Netzwerken veröffentlichen könnten? Networking-Sites, um Ihre Popularität zu steigern?
Parker ist ein solches Projekt (Projektadresse: https://github.com/LiuRoy/parker). Es nutzt das CeleryFramework, um regelmäßig Benutzervideolisten zu crawlen und die neuesten Veröffentlichungen zusammenzustellen Durch den asynchronen Download kann eine verteilte Bereitstellung problemlos erreicht werden. Da das Seitenlayout und die Schnittstelle jeder Website häufig aktualisiert werden, um die hohe Verfügbarkeit des Programms sicherzustellen, wurde speziell eine Statsd-Überwachung hinzugefügt, um die rechtzeitige Erkennung zu erleichtern Fehler.
CodeArchitektur
Derzeit in Parker Es werden nur Downloads von Bilibili und Miaopai implementiert. Wie aus dem Rahmendiagramm ersichtlich ist, müssen für jeden Website-Typ zwei asynchrone Schnittstellen implementiert werden: Parsen der Wiedergabeadresse des veröffentlichten Videos von der Video-Homepage des Benutzers und Herunterladen des Videos auf der Wiedergabeadresse. Daher müssen Sie beim Hinzufügen eines Website-Typs nicht den ursprünglichen Code ändern, sondern lediglich eine neue Analyse- und Download-Schnittstelle hinzufügen. Ich habe die nachfolgenden Vorgänge nach Abschluss des Video-Downloads nicht implementiert. Sie können sie entsprechend Ihren eigenen Anforderungen implementieren.
Beim Ausführen sendet Sellery regelmäßig die konfigurierte hochwertige Benutzerliste zur asynchronen Ausführung an die Parsing-Schnittstelle der entsprechenden Website, filtert die neueste Videowiedergabeadresse heraus und übergibt sie an die entsprechende Download-Schnittstelle Asynchrones Herunterladen. Rufen Sie nach Abschluss nachfolgende Vorgänge asynchron auf. Daher ist es erforderlich, einen Sellerie-Beat-Prozess zum Senden geplanter Aufgaben und mehrere asynchrone Sellerie-Aufgaben zum Durchführen von Parsing- und Download-Vorgängen zu starten. Bei relativ großen Videos wird empfohlen, die Anzahl angemessen zuzuweisen asynchrone Aufgaben entsprechend der Größe der Aufgabenliste.
Das Programm läuft
Es wurde überprüft, dass dieses Programm unter Ubuntu und Mac normal ausgeführt werden kann, da Sellerie unter lokalen Windows Es kann nicht normal gestartet werden und wurde daher nicht in der Windows-Umgebung überprüft.
Abhängige BibliothekInstallation
Die Python-Version ist 3.5. Führen Sie nach Eingabe des Projektverzeichnisses Folgendes aus:
pip install -r require.txt
Datenbank erstellenTabelle
Erstellen Sie sie im Datenbank im Voraus Zwei Tabellen (SQL: https://github.com/LiuRoy/parker/blob/master/spider/models/tables.sql)
Parameterkonfiguration
Logging.yaml, params.yaml und sites.yaml unter dem Konfigurationspfad entsprechen der Protokollkonfiguration, der Konfiguration laufender Parameter bzw. der Konfiguration beliebter Benutzer.
Protokollkonfiguration
Im Debug-Modus wird das Protokoll direkt in den Standard-Ausgabestream ausgegeben. Im Release-Modus wird der Protokollinhalt ausgegeben Daher muss die Ausgabeprotokolldatei konfiguriert werden.
Konfiguration ausführen
Modus DebugDebug-Modus, auf diesen Modus verweist das Protokoll die Standardausgabe, und es gibt keine Überwachungsdaten; im Freigabemodus wird das Protokoll in die angegebene Datei ausgegeben, und es sind Überwachungsdaten vorhanden.
broker_url entspricht der BROKER_URL von Celery, die als redis oder Rabbitmq
mysql _url Datenbankadresse, zwei Tabellen müssen im Voraus erstellt werden
video_number_per_page Wie viele Videowiedergabeadressen werden jedes Mal von der Video-Homepage des Benutzers geparst? Da die meisten Benutzer jedes Mal eine kleine Anzahl von Videos veröffentlichen, muss dieser nur auf einen sehr kleinen Wert eingestellt werden. Beim ersten Durchlauf wird ein großer Teil der langjährigen Videos nicht heruntergeladen.
download_timeout Timeout für Video-Download
Beliebte Benutzerkonfiguration
Basierend auf dieser Konfiguration erstellt Parker eine Liste von Sellerie-Beat-Planern.
Namensregel ist
URL-Benutzer Video-Homepage veröffentlichen
Aufgabe entspricht der asynchronen Sellerie-Parsing-Aufgabe
Minute, wie viele Minuten zum Überprüfen der Benutzervideoliste
Starten Sie die Aufgabe
Geben Sie das Projektverzeichnis ein und führen Sie den folgenden Befehl aus, um den Selleriearbeiter zu starten
celery -A spider worker
Führen Sie den folgenden Befehl aus, um die geplante Aufgabe „Sellerie schlagen“ zu starten
celery -A spider beat
Überwachung
Verwenden Sie unbedingt ein Docker-Image, um die Überwachungsumgebung in einer Minute zu konfigurieren. Danach müssen Sie nur noch die Daten zur erfolgreichen Ausführung und zur abnormalen Ausführung hinzufügen und können problemlos überwachen, ob das Programm normal ausgeführt wird.
Das obige ist der detaillierte Inhalt vonVerwenden von Python zum Implementieren des Beispielcodes für die Video-Download-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!