Maison  >  Article  >  développement back-end  >  Le robot d'exploration Python peut-il explorer les vidéos ?

Le robot d'exploration Python peut-il explorer les vidéos ?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-06-19 10:16:085386parcourir

Les robots d'exploration Web, également appelés araignées Web, font référence à des programmes de script qui explorent le contenu requis sur le Web selon certaines règles. Comme nous le savons tous, chaque page Web contient généralement des accès à d’autres pages Web, et les robots d’exploration utilisent une URL pour saisir d’autres URL dans l’ordre afin d’obtenir le contenu requis.

Le robot d'exploration Python peut-il explorer les vidéos ?

Structure du robot

Planificateur du robot ( Entrée du programme, utilisé pour démarrer l'ensemble du programme)

gestionnaire d'url (utilisé pour gérer les URL qui n'ont pas été explorées et les URL qui ont été explorées)

Téléchargeur de pages Web (utilisé pour télécharger le contenu d'une page Web à des fins d'analyse)

Analyseur de pages Web (utilisé pour analyser les pages Web téléchargées et obtenir de nouvelles URL et le contenu requis)

Outil de sortie de page Web (utilisé pour sortir le contenu obtenu sous la forme d'un fichier)

Première étape

Analyser le code source d'une page Web. Par exemple : http://video.weibo.com/show?fid=1034:0988e59a12e5178acb7f23adc3fe5e97, faites un clic droit pour afficher le code source. Généralement, les vidéos ont le suffixe mp4. Si vous recherchez, vous ne le trouverez pas, mais certaines. peuvent être directement visualisés, comme les vidéos Meipai.

Recommandations associées : "Tutoriel vidéo Python"

Étape 2

Capturez le paquet, analysez la demande et retournez. Cela peut également être réalisé grâce au puissant chrome, comme dans l'exemple ci-dessus, faites un clic droit->Inspecter l'élément->NetWork, puis actualisez la page Web avec F5

J'ai trouvé qu'il y en a beaucoup. Les demandes ne peuvent être analysées qu'une par une. En fait, les formats vidéo sont mp4, flv et avi. Vous pouvez les voir en même temps, les copier dans le navigateur et les ouvrir. ça suffit, c'est le lien de téléchargement que nous voulons.

La troisième étape

Analyser les modèles de liens de téléchargement et de liens vidéo. C'est-à-dire la relation entre http://video.weibo.com/show?fid=1034:0988e59a12e5178acb7f23adc3fe5e97 et xxx.mp4. Cela nécessite encore une fois d'analyser le code source de la page Web. En fait, vous pouvez faire attention au lien avec le suffixe .m3u8 ci-dessus. M3u8 enregistre un fichier d'index en texte brut. Lorsque vous l'ouvrez, le logiciel de lecture ne le lit pas, mais le trouve. l'audio et la vidéo correspondants en fonction de son index. Utilisez l'adresse réseau du fichier pour le lire en ligne, ouvrez-le et voyez que le lien de téléchargement souhaité y est bien enregistré. De plus, le lien avec le suffixe .m3u8 se trouve dans le code source de la page web.

Résumé

Après l'analyse des trois premières étapes, l'idée de ​​​​obtention du lien de téléchargement de la vidéo Obtenez simplement le lien avec le suffixe .m3u8 à partir du code source de la page Web, téléchargez le fichier, obtenez le lien de téléchargement de la vidéo et enfin téléchargez la vidéo

Code source

#coding=utf-8
import os
import re
import urllib2
import urllib
from common import Common
class SinaVideo():
 
    URL_PIRFIX = "http://us.sinaimg.cn/"
    def getM3u8(self,html):
        reg = re.compile(r'list=([\s\S]*?)&fid')
        result = reg.findall(html)
        return result[0]
 
 
    def getName(self,url):
         return url.split('=')[1]
 
    def getSinavideoUrl(self,filepath):
        f = open(filepath,'r')
        lines = f.readlines()
        f.close()
        for line in lines:
            if line[0] !='#':
                return line
 
    def download(self,url,filepath):
        #获取名称
        name = self.getName(url)
        html = Common.getHtml(url)
        m3u8 = self.getM3u8(html)
        Common.download(urllib.unquote(m3u8),filepath,name + '.m3u8')
        url = self.URL_PIRFIX + self.getSinavideoUrl(filepath+name+'.m3u8')
        Common.download(url,filepath,name+'.mp4')
rrree

Méthode d'appel :

#common.py
#coding=utf-8
import urllib2
import os
import re
 
 
class Common():
    #  获取网页源码
    @staticmethod
    def getHtml(url):
        html = urllib2.urlopen(url).read()
        print  "[+]获取网页源码:"+url
        return html
 
    # 下载文件
    @staticmethod
    def download(url,filepath,filename):
        headers = {
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Charset': 'UTF-8,*;q=0.5',
            'Accept-Encoding': 'gzip,deflate,sdch',
            'Accept-Language': 'en-US,en;q=0.8',
            'User-Agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) 
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36'
        }
        request = urllib2.Request(url,headers = headers);
        response = urllib2.urlopen(request)
        path = filepath + filename
        with open(path,'wb') as output:
            while True:
                buffer = response.read(1024*256);
                if not buffer:
                    break
                # received += len(buffer)
                output.write(buffer)
 
        print "[+]下载文件成功:"+path
 
    @staticmethod
    def isExist(filepath):
        return os.path.exists(filepath)
 
    @staticmethod
    def createDir(filepath):
         os.makedirs(filepath,0777)

Résultat :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn