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.
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')
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!