Maison >développement back-end >Tutoriel Python >Introduction détaillée à l'exploration vidéo du robot d'exploration Python

Introduction détaillée à l'exploration vidéo du robot d'exploration Python

不言
不言original
2018-09-19 17:27:2022394parcourir

Cet article vous apporte une introduction détaillée aux vidéos d'exploration des robots Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

J'écris actuellement une application qui doit collecter des vidéos populaires sur Weibo. Ces courtes vidéos proviennent généralement de Miaopai, Weipai, Meipai et Sina Video, et il n'y a pas d'option de téléchargement, je ne peux donc utiliser que votre. cerveau pour réfléchir à une solution.

La première étape

Analysez le code source de la 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.

La deuxième étape

Capturez le paquet, analysez la demande et retournez. Cela peut également être réalisé via le puissant chrome, ou l'exemple ci-dessus, cliquez avec le bouton droit-> Inspecter l'élément-> NetWork, puis actualisez la page Web avec F5
Introduction détaillée à lexploration vidéo du robot dexploration Python

J'ai constaté qu'il existe de nombreux demandes, une seule après analyse, en fait, les formats vidéo sont mp4, flv et avi. Vous pouvez le voir immédiatement, copiez-le dans le navigateur et ouvrez-le.
Introduction détaillée à lexploration vidéo du robot dexploration Python

La troisième étape

Analysez 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.
Introduction détaillée à lexploration vidéo du robot dexploration Python

Résumé

Après l'analyse des trois premières étapes, l'idée pour obtenir le lien de téléchargement de la vidéo est d'obtenir d'abord le lien du suffixe .m3u8 depuis le code source de la page Web, téléchargez le fichier et obtenez le lien de téléchargement de la vidéo à l'intérieur, et enfin téléchargez la vidéo

Code source

#sinavideo.py
#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')
#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)

Méthode d'appel :

 url = "http://video.weibo.com/show?fid=1034:0988e59a12e5178acb7f23adc3fe5e97"sinavideo = SinaVideo()         
 sinavideo.download(url,""/Users/cheng/Documents/PyScript/res/"")

Résultat

Introduction détaillée à lexploration vidéo du robot dexploration Python

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