从网站下载音频文件

时间:2013-03-24 10:28:39

标签: c# audio web download html-agility-pack

我想要做的是从网站下载音频文件。单击小耳罩后会播放音频文件并触发播放声音。我想知道是否有可能找到并下载声音。

我试图找到它的尝试:

public void grabAudio()
    {
        string s = "http://pokedream.com/pokedex/pokemon/bulbasaur";

        HtmlWeb hw = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = hw.Load(s);

        var audio = doc.DocumentNode.SelectNodes("//div[@class='triggers']//img#pokecry-trigger")[0];
        if (doc.DocumentNode.SelectNodes("//div[@class='triggers']//img#pokecry-trigger")[0] != null)
        {
            //I have no idea what im doing :(
        }

    }

Picture of what I am trying to getLink to website

赞赏任何和所有帮助:)

1 个答案:

答案 0 :(得分:3)

首先,如果您没有网站作者的权限来执行此操作,您可能不应该这样做。

现在,如果您拥有相应的权限并且有正当理由这样做;您可以检查信号源并查看图像没有明显的功能 - 图像不播放声音。所以功能很可能是用JavaScript控制的。

所以,你开始浏览JavaScript,寻找附加到感兴趣元素的东西。您应该在pokedex.js

中找到此代码
$('#pokecry-trigger').click(function() {
    $('#pokecry').html('<embed src="/pokedex/images/cries/' + $('#identifier').text() + '.mp3" />');
  });

因此,当您单击图像时,会在标记中添加embed标记。查看src标记,您可以得出文件位于/pokedex/images/cries/<id>.mp3的结论,其中网站在标识为#identifier的标记中输出ID。

从那里,你只需找到你需要的每个声音的ID,然后下载它。这是通过下载HTML标记,找到标识符DIV并将其插入URL模板来完成的,如上所述:

string id = "001"; // found in the markup
string url = String.Format("http://pokedream.com/pokedex/images/cries/{0}.mp3", id);
using(var cli = new System.Net.WebClient()) 
{
    var mp3Data = cli.DownloadData(url);
}