zoukankan      html  css  js  c++  java
  • C#中t通过IHTMLElement,获得相应的HTML中的Javascript变量的值

    C#中,已经获得了对应的IHTMLElement变量,想要获得此html中对应当前某个javascript类型的变量,即:

    <SCRIPT type=text/javascript>
    players();
    $().ready(function(){
    $("#ratesong").click(function(e){
    var songid = cur_sid;
     
    中的:songid或cur_sid。
     
     

    【解决过程】

    1.找了半天,找到一篇相对来说最接近我的问题的帖子:

    如何用mshtml获得Javascript中function的返回值[mshtml]

    但是还是不能得到我所想要的,如何获得对应的某个javascript类型的变量值。

    2.又找到此贴:C# webbrowser控件技巧(取得javascript变量值, 禁止显示脚本错误),可是还是没有用,之前就找到过。

    3.网上也找到一堆关于HTMLDocument的介绍:

    HTMLDocument

    HtmlDocument.GetElementsByTagName

    和关于IHTMLElement的解释:

    IHTMLElement和IHTMLElement2接口

    IHTMLElement Object

    但是都还是找不到我要的解决方案。

    4.后来,无意间,找到这个帖子:

    WebBrowser 获取页面标签class值

    然后参考其代码,一点点折腾,写出了类似的代码,去实现了,找到对应的我所需要相关部分的html源码,然后用正则表达式处理,提取我所需要的当前songtaste的歌曲的id,即songId,也就间接实现了上述所需要的,当前javascript的变量的值songid了。

    对应的代码如下:

    HTMLDocument stPlayingPage = getMultiPlayingPage();
    
    IHTMLElementCollection divTagName = stPlayingPage.getElementsByTagName("div");
    
    foreach (IHTMLElement div in divTagName)
    
    {
    
        if (div.id == "left_music_div")
    
        {
    
            //string html = div.outerHTML;
    
            string html = div.innerHTML;
    
            //<div class="songName">
    
            //    <p class="p_tit">歌曲试听:<b><span id="songInfo"><input id="url_2935406" name="+SongName+" value="http://m5.songtaste.com/201204222219/165c63e0bab9d17989f103994215b63c/5/53/53d1bec93f06a5b6df572627454923a7.mp3" type="hidden"><input id="midurl_2935406" value="03513031b0c55b0d9afd6d044dcfcb22d1c0801fddbea0b0fac2a8af690efd1dbfaccb168747497c2f1ced3fe51ffc51" type="hidden"><a class="underline" href="/song/2935406/" target="_blank">准备用这歌做铃声^做铃声^哈哈哈^祭夜醉美推荐   祭夜醉美 </a></span></b></p>
    
            //</div>
    
            string songNameP = @"<div class=""songName"">\s+?<p class=""p_tit"">歌曲试听:<b><span id=""songInfo""><input id=""url_(?<songid>\d+)""";
    
            Regex songNameRx = new Regex(songNameP);
    
            Match foundCurSong = songNameRx.Match(html);
    
            if (foundCurSong.Success)
    
            {
    
                string songId = foundCurSong.Groups["songid"].Value;
    
            }                       
    
        }
    
    }

  • 相关阅读:
    基于Postman的API自动化测试
    MVC 页面静态化
    一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](一)
    HTML LIST 输入框自动查询追加框,自动过滤 HTML5
    C# 关键字
    Python 爬虫实例(15) 爬取 百度百聘(微信公众号)
    爬虫 修改 下拉框
    验证码识别之图像切割算法(三) 连通域分割
    验证码识别之图像切割算法(二)
    验证码识别之图像切割算法(一)
  • 原文地址:https://www.cnblogs.com/sung/p/2824487.html
Copyright © 2011-2022 走看看