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 に答える