2010-10-09 4 views
2

J'ai une page qui contient des liens vers .mp3/fichiers .wav dans ce formatscript make pour télécharger tous les fichiers MP3 à partir d'une page

<a href="http://siteName/subfolder/filename.mp3">File Name</a> 

ce que je dois faire un script qui télécharge toutes ces fichiers au lieu de les télécharger moi-même

Je sais que je peux utiliser l'expression régulière pour faire quelque chose comme ça, mais je ne sais pas comment? et quel est le meilleur choix pour le faire (Java, C#, JavaScript)?

Toute aide sera appréciée

Merci à l'avance

+1

Voulez-vous télécharger plusieurs fichiers ou écrire un script pour télécharger plusieurs fichiers? Si c'est le premier alors il y a de meilleures façons de le faire autre que l'écriture de scripts/programmes ... – mx0

+0

@ cps7: Quelle est la meilleure façon de faire cela sans écrire du code pour le faire automatiquement? –

+0

DownThemAll plugin pour Firefox. – dbkk

Répondre

1

Vous pouvez utiliser SgmlReader pour analyser les DOM et extraire tous les liens d'ancrage et télécharger les ressources correspondantes:

class Program 
{ 
    static void Main() 
    { 
     using (var reader = new SgmlReader()) 
     { 
      reader.DocType = "HTML"; 
      reader.Href = "http://www.example.com"; 
      var doc = new XmlDocument(); 
      doc.Load(reader); 
      var anchors = doc.SelectNodes("//a/@href[contains(., 'mp3') or contains(., 'wav')]"); 
      foreach (XmlAttribute href in anchors) 
      { 
       using (var client = new WebClient()) 
       { 
        var data = client.DownloadData(href.Value); 
        // TODO: do something with the downloaded data 
       } 
      } 
     } 
    } 
} 
1

Eh bien, Si vous voulez aller hard-core, je pense que l'analyse de la page avec DOMDocument (http://php.net/manual/en/class.domdocument.php) et la récupération des fichiers avec cURL le feraient si vous êtes d'accord avec PHP.

De combien de fichiers parlons-nous ici?

+0

Merci pour votre réponse: environ 200 fichier ou plus –

+0

Eh bien, peut-être pas la tâche idéale pour PHP, mais si vous êtes plus dans l'expérimentation, vous pouvez aller avec. Sinon, allez avec quelque chose comme @Darin suggéré, mais c'est plus ou moins la même approche, sauf le fait que nous parlons de différentes langues :) – Claudiu

0

Belle bibliothèque de soupe de Python est bien adapté à cette tâche: http://www.crummy.com/software/BeautifulSoup/

pourrait être utilisé de cette façon:

import urllib2, re 
from BeautifulSoup import BeautifulSoup 

#open the URL 
page = urllib2.urlopen("http://www.foo.com") 
#parse the page 
soup = BeautifulSoup(page) 
#get all anchor elements 
anchors = soup.findAll("a") 
#filter anchors based on their href attribute 
filteredAnchors = filter(lambda a : re.search("\.wav",a["href"]) or re.search("\.mp3",a["href"]), anchors) 
urlsToDownload = map(lambda a : a["href"],filteredAnchors) 
#download each anchor url... 

Voir ici pour obtenir des instructions sur le téléchargement des années mp3 de leurs URL: How do I download a file over HTTP using Python?

+0

Merci Mr/Mme. echo-flow pour votre réponse, je n'ai jamais utilisé python auparavant et je n'ai aucune information à ce sujet, mais j'aimerais savoir quel est le langage python? et quel est l'avantage/désavantage de cette langue sur C#, Java ou C++? , s'il vous plaît si vous avez le temps me répondre, Merci à l'avance –

+0

En tête, je peux dire: Python est un langage de script orienté objet, dynamiquement typé, généraliste. Il est souvent appelé "pseudocode exécutable" parce que ses programmes sont extrêmement lisibles. Il est utilisé par la NASA, ainsi que Google pour des services comme Gmail. C'est open source, développé et maintenu par la communauté. Son avantage par rapport aux langages tels que C#, Java ou C++ est qu'il se situe à un niveau supérieur et qu'il est extrêmement flexible à la fois en termes de syntaxe et de sémantique. Un inconvénient est qu'il peut être plus lent que n'importe laquelle de ces langues. Voir python.org pour plus d'informations. – jbeard4

Questions connexes