2010-10-09 48 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