我用webhttprequest去分析百度MP3页面,从页面中得到MP3的地址首先是申请得到搜索结果的界面  歌曲名 歌手名 专辑名 试听 歌词 铃声 大小 格式 链接速度 
1 后来  刘若英    我会陪你  试听  歌词  铃声  1.1 M wma  
2 后来  刘若英    我会陪你  试听  歌词  铃声  5.2 M mp3 这个样子,点击最左边的歌曲名,可以进入下一个界面,也就是MP3地址的界面
http://220.181.38.82/m?word=mp3,http://www.suzkb.com/singing/userfiles/video/Y2JjbWZoZ2xiZGNnZ2ptOA$$.mp3,,[%BA%F3%C0%B4]&ct=134217728&tn=baidusg,后来  &si=%BA%F3%C0%B4;;%C1%F5%C8%F4%D3%A2;;14970;;14970&lm=16777216&sgid=2但是用webhttprequest请求,却得不到MP3的地址,因为它里面的地址是执行js的到的,请问,我如何去得到MP3地址用webbrowser能行吗?但是他页面源文件中,也不包含MP3地址另外我下载MP3时,怎么获得下载速度。我么次读1024个字节,获得读取的时间,然后计算,这样算的速度很不准确

解决方案 »

  1.   

    找到相关JS 然后用C#模拟出来  做采集程序 这个很常见
      

  2.   

    二楼说得对,就相当于用C#把JS重写一下,效果是一样的
      

  3.   

    webbrowser控件调用js的格式是:
    object obj = mywebbrowser.Document.InvokeScript("js函数名,注意不带括号", new object[]{"参数表"});返回值是个javascript对象,可以使用反射调用它的方法,比如调用toString()方法:
    object o = obj.GetType().InvokeMember("toString", System.Reflection.BindingFlags.InvokeMethod, null, obj, null);也可以获取属性,比如获取id属性:
    foreach (PropertyInfo pinfo in obj.GetType().GetProperties())
    {
      if (pinfo.Name == "id")
      {
        object ob = pinfo.GetValue(obj, null);
        if (ob != null)
        {
           string id = ob.ToString();
        } 
      }
    }