Maison >développement back-end >Tutoriel Python >Introduction détaillée à l'exploration vidéo du robot d'exploration Python
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.
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.
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
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.
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.
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
#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/"")
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!