我想要做的是从网站下载音频文件。单击小耳罩后会播放音频文件并触发播放声音。我想知道是否有可能找到并下载声音。
我试图找到它的尝试:
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 get 和 Link to website
赞赏任何和所有帮助:)
答案 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);
}