如何用vb来获得网页中的音乐的地址,他的地址是用javascript合成的 ,如:
http://www.nowok.com/listen11.asp?SongsID=23708
他的音乐地址为:http://61.128.167.194:82/aacad/male/z/Hins/200301/03.rm这是我用手工来找到的但是,用vb怎么来找到那个地址呢???

解决方案 »

  1.   

    哦,我还以为是背景MID文件呢。顶先。
      

  2.   

    var RandomFile="aacad"
    var SubjectFile="male"
    var SingerLetter="z"
    var SingerFile="Hins"
    var CDFile="200301"
    var FileName="03.rm"方法两种,你要不要用webbrowser的??如果用的话,用webbrowser1.document.midiaplay的id.filename这么做方法二:用inet得到源码进行 instr匹配分析
      

  3.   

    在webbrowser控件里的documentcomplete事件中加入set ttt=webbrowser1.document.getElementById("midiaplay的id")
    thename=ttt.filename
    这个thename就是了方法二
    Source1 = Inet1.OpenURL(txtURL.Text)
        '获得源代码
    ipos=instr(source1,"RandomFile")
    获得位置这样一个一个来就可以了,你明白了没有,就是合理的利用mid和 instr来获得参数
      

  4.   

    看好了是哪位兄弟,要怎么谢代码:
    Private Sub web_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    Dim doc As HTMLDocument
    Dim musics As IHTMLElementCollection
    Dim music As HTMLEmbed
    Set doc = web.document
    Set musics = doc.All.tags("embed")
    For Each music In musics
    musicsrc = music.src
    Next
    End Sub要添加WEB控件,NAME为WEB
    引用HTML对象库
      

  5.   

    set ttt=webbrowser1.document.getElementById("play1")
    thename=ttt.src------------->try this楼上的是不对的
      

  6.   

    To klever()  Set musics = doc.All.tags("embed")后musics里面什么都没有啊?不知道怎么回事?继续关注!
      

  7.   

    没错,musics是音乐集合
    然后遍历这些集合这位liuxiaoyi666(兔子) 兄弟,你可能搞错了,你是通过标识符取得对象,举个例子说
    这是百度一个试听页的地址
    http://mp3.baidu.com/m?ct=134217728&tn=baidumt,Superstar&word=mp3,http://202.206.96.204/homepage/homepageusers/xiaochen/yinyue/pKejmaepq5mjYzM$.mp3,,[superstar]&lm=16777216
    网页原代码如下:<!--STATUS OK-->
    <html>
    <head>
    <title>百度MP3试听</title>
    <STYLE type=text/css>
    .p1 {FONT-SIZE: 9pt; FONT-FAMILY: "宋体"}
    .f14 {FONT-SIZE: 14px; MARGIN-LEFT: -24pt; align: left}
    .f9 {FONT-SIZE: 9pt; LINE-HEIGHT: 18px}
    TD {FONT-SIZE: 9pt; LINE-HEIGHT: 18px}
    .c {COLOR: #666666}
    .formfont {FONT-SIZE: 16px; FONT-FAMILY: "Verdana", "Arial", "Helvetica", "sans-serif"}
    .t {COLOR: #0000cc; TEXT-DECORATION: none}
    A.t:hover {TEXT-DECORATION: underline}
    </STYLE>
    </head>
    <script>
    <!--
    function h(obj,url){
    obj.style.behavior='url(#default#homepage)';
    obj.setHomePage(url);
    }
    -->
    </script>
    <body leftmargin="0" topmargin="0"><table border="0" bgcolor="FFFFFF" width="100%">
    <tr>
        <td align="left" width=139><img src="http://www.baidu.com/img/logo_mt.gif"></td>
        <td align=left></td>
    </tr>
    <tr>
        <td align="center" class=f9 colspan=2> 
          <HR color=#333333 SIZE=1>
    您正在试听的歌曲是:
    <b>Superstar ...</b>   <a href="#" onclick="h(this,'http://www.baidu.com')">设百度为首页</a><br>
    试听歌曲出处: <a href="http://202.206.96.204/homepage/homepageusers/xiaochen/yinyue/superstar1.mp3">http://202.206.96.204/homepage/homepageusers/xiaochen/yinyue/superstar1.mp3</a><br>
    此歌曲版权可能受保护,百度与歌曲出处无关。
    <HR color=#333333 SIZE=1>
    </td></tr>
    <tr>
        <td align="center" colspan=2> 
    <object id="mplayer" width="460" height="68" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" 
    codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" 
    align="baseline" border="0" standby="Loading Microsoft Windows Media Player components..." 
    type="application/x-oleobject">
        <param name="FileName" value="http://202.206.96.204/homepage/homepageusers/xiaochen/yinyue/superstar1.mp3">
        <param name="ShowControls" value="1">
        <param name="ShowPositionControls" value="0">
        <param name="ShowAudioControls" value="1">
        <param name="ShowTracker" value="1">
        <param name="ShowDisplay" value="0">
        <param name="ShowStatusBar" value="1">
        <param name="AutoSize" value="0">
        <param name="ShowGotoBar" value="0">
        <param name="ShowCaptioning" value="0">
        <param name="AutoStart" value="1">
        <param name="PlayCount" value="0">
        <param name="AnimationAtStart" value="0">
        <param name="TransparentAtStart" value="0">
        <param name="AllowScan" value="0">
        <param name="EnableContextMenu" value="1">
        <param name="ClickToPlay" value="0">
        <param name="InvokeURLs" value="1">
        <param name="DefaultFrame" value="datawindow">------------------------------------------------------------------------------------------
        <embed src="http://202.206.96.204/homepage/homepageusers/xiaochen/yinyue/superstar1.mp3" align="baseline" border="0" width="460" height="68"
            type="application/x-mplayer2"
            pluginspage="http://www.microsoft.com/isapi/redir.dll?prd=windows&amp;sbp=mediaplayer&amp;ar=media&amp;sba=plugin&amp;"
            name="MediaPlayer" showcontrols="1" showpositioncontrols="0"
            showaudiocontrols="1" showtracker="1" showdisplay="0"
            showstatusbar="1"
            autosize="0"
            showgotobar="0" showcaptioning="0" autostart="1" autorewind="0"
            animationatstart="0" transparentatstart="0" allowscan="1"
            enablecontextmenu="1" clicktoplay="0" invokeurls="1"
            defaultframe="datawindow">
        </embed>
    ------------------------------------------------------------------------------------------
    </object>
    <br>
    &nbsp;如果您无法试听歌曲,请先安装Windows media player软件:<a href="http://download.microsoft.com/download/9/4/0/94072943-9188-4a60-b31f-3031f18404e4/mpsetup.exe" target="_blank">立即下载</a> 
    ,或参见<a target=_blank href="http://www.baidu.com/search/faq-mp3.html#7">帮助</a></td></tr>
    </table>
    </body>
    </html>
    重要的地方我用“————————————————”围起来了
    你注意以下<embed src="http://202.206.96.204/homepage/homepageusers/xiaochen/yinyue/superstar1.mp3" 
    .........>
    </embed>我通过embed标记取得对象,然后分析其src属性取得地址,可以试试。
    而根据你的方法,也就是同过标识符id,你可以去不同的试听网页看看,id是不同的,id主要网页自身的控制,假如你把id设为mid,那么在在网页中就可以同过mid.play或mid.stop控制网页的播放。而我的embed标志是试听网页不可缺少的,明白了没
      

  8.   

    还是我
    要说一下,楼主提供的试听地址比较特殊,需要这样
    Private Sub Command1_Click()
    Dim doc As HTMLDocument
    Dim scps As IHTMLElementCollectionSet doc = web.Document
    Set scps = doc.All.tags("script")t = scp(4).innerHTML
    Debug.Print t
    Next
    End Sub
    然后再分析原代码
    你可以遍历字符串,每遇一个"val"就把"="后的相连就可以了
      

  9.   

    你错了,你对于那个根本就没有embed,你自己写的程序纯粹是误导要是的要应该是tagname也是object,你举例跟事实不符合,没看别瞎说
      

  10.   

    沙货,获得源代码,分析出实际链接不就ok了吗?这是嘴快的办法了
    Web.Document.body.innerHtml
      

  11.   

    晕,直接用 Inet 或者 Winsock 下载回来,然后
    在分析字符串岂不是更快,一定得背上个 webbrowser ?闹心用 Instr 和 Mid 函数配合很容易就能取到地址了嘛。。
      

  12.   

    楼上的两位,麻烦你们把楼主的题目看清楚了先!
    人家说得很清楚歌曲的url是用script合成的,分析源码要费老鼻子事了。
      

  13.   

    我已经说了这个地址比较特殊,而且liuxiaoyi666(兔子) 
    你看清楚了,他的源代码是不是有一行
    document.write("<param name='BACKGROUNDCOLOR' value='#000000'><embed src='"+ URL +"' type='audio/x-pn-realaudio-plugin' console='Clip1' controls='ControlPanel,StatusBar' height='66' width='248' autostart='true'>")
      

  14.   

    晕/有没有人能解决啊plawuyue2004(killcsdn)
     jykuwang(三毛) 
    请看清楚再回答好吧!!!!!!!!!!!
      

  15.   

    那是不是js合成的。。那是ASP程序在服务器端数据库取出的地址啊。这其实就是个重定向的问题,不是楼上几位吵的语法分析的问题。
      

  16.   

    asp 中可以用 response.redirect.request.querystring(“url”)来获取真实地址。没在VB中试过。
      

  17.   

    还是晕,
    你把js文件下载过来看看是不是js合成
      

  18.   

    <script language="javascript">
    <!--
    var RandomFile="aacad"
    var SubjectFile="male"
    var SingerLetter="z"
    var SingerFile="Hins"
    var CDFile="200301"
    var FileName="03.rm"
    Listen(Method, IP, Port, SubjectFile, SingerLetter, SingerFile, CDFile, FileName)
    function Listen(Method, IP, Port, SubjectFile, SingerLetter, SingerFile, CDFile, FileName)
    {
    var MusicPort=':82'
    var URL = Method + IP + MusicPort + "/" + RandomFile + "/" + SubjectFile + "/" + SingerLetter + "/" + SingerFile + "/" + CDFile + "/" + FileName;
    document.write("<object id='player1' style='LEFT: 0px; TOP: 0px' classid='clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA' height=66 width=248 viewastext>");
    document.write("<param name='_ExtentX' value='5821'>");
    document.write("<param name='_ExtentY' value='1323'>");
    document.write("<param name='AUTOSTART' value='-1'>");
    document.write("<param name='SHUFFLE' value='0'>");
    document.write("<param name='PREFETCH' value='0'>");
    document.write("<param name='NOLABELS' value='0'>");
    document.write("<param name='SRC' value='"+ URL +"'>");
    document.write("<param name='CONSOLE' value='zool'>");
    document.write("<param name='LOOP' value='-1'>");
    document.write("<param name='NUMLOOP' value='0'>");
    document.write("<param name='CENTER' value='0'>");
    document.write("<param name='MAINTAINASPECT' value='0'>");
    document.write("<param name='BACKGROUNDCOLOR' value='#000000'><embed src='"+ URL +"' type='audio/x-pn-realaudio-plugin' console='Clip1' controls='ControlPanel,StatusBar' height='66' width='248' autostart='true'>");
    document.write("</object>");
    }你是说这段代码么???这段代码就包含了你要的URL.但是这个是asp动态写入的页面.这个就是ASP的效果,一切都在服务端生成,然后返回客户页面.你不知道ASP程序到底做了什么.既然这样,那你就分析这段JS代码吧
      

  19.   

    真是废话
    这个url是在服务端生成??
    增大你的眼睛看看整个文件
      

  20.   

    这个url是个javascript 变量,并不是asp变量
    asp变量你是看不到的
      

  21.   

    ..........我没惹着阁下吧??既使你是对的也用不着这样吧???拜托你看清楚好不好,我哪里说那是ASP变量了??我说那整段JS代码都是ASP写入的. 多的不说了.自己对比着看看这几个页面.再想想listen11.asp?SongsID=23705 到底是什么意思.如果是简单的JS合成,大可不必做成ASP程序.然后自己再仔仔细细的看看代码.祝你成功http://www.nowok.com/listen11.asp?SongsID=23705
    http://www.nowok.com/listen11.asp?SongsID=23706
    http://www.nowok.com/listen11.asp?SongsID=23707
    http://www.nowok.com/listen11.asp?SongsID=23708