我有一个包含一些链接在格式为.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