0

我想做的也是从网站下载音频文件。单击小耳罩即可播放音频文件,并触发声音播放。我想知道是否可以找到并下载声音。

我试图找到它的尝试:

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 :(
        }

    }

我想要获取的图片链接到网站

任何和所有的帮助表示赞赏:)

4

1 回答 1

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该站点将 ID 输出到带有 ID 的标记中#identifier

从那里您只需找到所需的每种声音的 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);
}
于 2013-03-24T10:42:27.947 回答