我有一個包含一些鏈接在格式爲.mp3/.wav文件的網頁化妝腳本從網頁下載的所有MP3文件
<a href="http://siteName/subfolder/filename.mp3">File Name</a>
什麼,我需要做一個腳本,將下載所有這些文件,而不是下載他們我的自我
我知道我可以使用正則表達式做一些這樣的事情,但我不知道如何?什麼是最好的選擇(Java,C#,JavaScript)?
任何幫助將不勝感激提前
我有一個包含一些鏈接在格式爲.mp3/.wav文件的網頁化妝腳本從網頁下載的所有MP3文件
<a href="http://siteName/subfolder/filename.mp3">File Name</a>
什麼,我需要做一個腳本,將下載所有這些文件,而不是下載他們我的自我
我知道我可以使用正則表達式做一些這樣的事情,但我不知道如何?什麼是最好的選擇(Java,C#,JavaScript)?
任何幫助將不勝感激提前
感謝你可以使用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
}
}
}
}
}
好,如果你想去核心,我認爲用DOMDocument(http://php.net/manual/en/class.domdocument.php)解析頁面並用cURL檢索文件會做到這一點,如果你確定使用PHP。
我們在這裏討論了多少個文件?
感謝您的回覆:大約200個文件或更多 – 2010-10-09 15:59:49
很好,可能不是PHP的理想任務,但如果您更多的嘗試,您可以使用它。否則,就像@Darin建議的那樣,儘管如此,除了我們正在談論不同的語言之外,它或多或少都是相同的方法:) – Claudiu 2010-10-09 16:10:23
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?
謝謝先生/小姐。回聲流爲您的答案,我從來沒有用過Python,我沒有任何有關它的信息,但我很想知道什麼是Python語言?這種語言與C#,Java或C++相比有何優勢/劣勢? ,如果你有時間回答我,請提前致謝 – 2010-10-09 17:38:33
我可以說:我的頭腦是:Python是一種通用的,動態類型的,面向對象的腳本語言。它通常被稱爲「可執行僞代碼」,因爲它的程序非常易讀。它被美國國家航空航天局和谷歌用於gmail等服務。它是開源的,由社區開發和維護。它比C#,Java或C++等語言的優勢在於它處於更高層次,並且在語法和語義方面都非常靈活。缺點是它比任何這些語言都要慢。有關更多信息,請參閱python.org。 – jbeard4 2010-10-09 21:27:36
你想下載許多文件,或寫腳本下載許多文件?如果它是第一個,那麼有更好的方法來做到這一點,然後編寫腳本/程序... – mx0 2010-10-09 16:38:09
@ cps7:有什麼更好的方法來做到這一點,而無需編寫代碼自動執行該操作? – 2010-10-09 16:42:06
DownThemAll插件的Firefox。 – dbkk 2011-05-03 17:28:53