2010-10-09 90 views
2

我有一个包含一些链接在格式为.mp3/.wav文件的网页化妆脚本从网页下载的所有MP3文件

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

什么,我需要做一个脚本,将下载所有这些文件,而不是下载他们我的自我

我知道我可以使用正则表达式做一些这样的事情,但我不知道如何?什么是最好的选择(Java,C#,JavaScript)?

任何帮助将不胜感激提前

+1

你想下载许多文件,或写脚本下载许多文件?如果它是第一个,那么有更好的方法来做到这一点,然后编写脚本/程序... – mx0 2010-10-09 16:38:09

+0

@ cps7:有什么更好的方法来做到这一点,而无需编写代码自动执行该操作? – 2010-10-09 16:42:06

+0

DownThemAll插件的Firefox。 – dbkk 2011-05-03 17:28:53

回答

1

感谢你可以使用SgmlReader解析DOM,并提取所有的锚链接,然后下载相应的资源:

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

好,如果你想去核心,我认为用DOMDocument(http://php.net/manual/en/class.domdocument.php)解析页面并用cURL检索文件会做到这一点,如果你确定使用PHP。

我们在这里讨论了多少个文件?

+0

感谢您的回复:大约200个文件或更多 – 2010-10-09 15:59:49

+0

很好,可能不是PHP的理想任务,但如果您更多的尝试,您可以使用它。否则,就像@Darin建议的那样,尽管如此,除了我们正在谈论不同的语言之外,它或多或少都是相同的方法:) – Claudiu 2010-10-09 16:10:23

0

Python的美丽的汤库非常适合于这项任务: http://www.crummy.com/software/BeautifulSoup/

能以这种方式使用:

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... 

看到这里上下载的MP3从它们的URL说明:How do I download a file over HTTP using Python?

+0

谢谢先生/小姐。回声流为您的答案,我从来没有用过Python,我没有任何有关它的信息,但我很想知道什么是Python语言?这种语言与C#,Java或C++相比有何优势/劣势? ,如果你有时间回答我,请提前致谢 – 2010-10-09 17:38:33

+0

我可以说:我的头脑是:Python是一种通用的,动态类型的,面向对象的脚本语言。它通常被称为“可执行伪代码”,因为它的程序非常易读。它被美国国家航空航天局和谷歌用于gmail等服务。它是开源的,由社区开发和维护。它比C#,Java或C++等语言的优势在于它处于更高层次,并且在语法和语义方面都非常灵活。缺点是它比任何这些语言都要慢。有关更多信息,请参阅python.org。 – jbeard4 2010-10-09 21:27:36