我想要做的是從網站上下載音頻文件。單擊小耳罩後會播放音頻文件並觸發播放聲音。我想知道是否有可能找到並下載聲音。
我嘗試找到它的嘗試:
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 :(
}
}
任何和所有的幫助表示讚賞:)
首先,如果您沒有網站作者的權限來執行此操作,您可能不應該這樣做。
現在,如果您確實擁有適當的許可並且有正當理由這樣做;您可以檢查信號源並查看圖像沒有明顯的功能 - 圖像不播放聲音。所以功能很可能是用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為#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);
}