C# - 获取从JavaScript的网页浏览器产生的变量 [英] C# - Get variable from webbrowser generated by javascript

查看:117
本文介绍了C# - 获取从JavaScript的网页浏览器产生的变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

已经由web浏览器下载的网页,并需要获得电子邮件地址。但它是由javastript生成。在code我能找到此脚本:

 <脚本类型=文/ JavaScript的字符集=utf-8> VAR I ='和;#109;一个'+'I和#108; +'和;#116; O'; VAR一个='impexta&放大器;#64; impexta&安培;#46; SK';的document.write('< A HREF =+ I +:+ A +'的onclick = _kt.i(386728,20);>'+ A +'&下; / A>');&下; /脚本>

我看了到处如何调用脚本,由我不知道他的名字。所以,我想是得到一个变量值。

编辑:code面前:

  ...
web浏览器WB =新的WebBrowser();
wb.DocumentCompleted + =新WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
wb.Navigate(URL);为(;!wb.ReadyState = WebBrowserReadyState.Complete;)
{
    System.Windows.Forms.Application.DoEvents();
}
...无效wb_DocumentCompleted(对象发件人,WebBrowserDocumentCompletedEventArgs E)
{
        web浏览器WB =发件人作为web浏览器;
        如果(WB!= NULL)
        {
            如果(wb.ReadyState == WebBrowserReadyState.Complete)
            {
                HtmlAgilityPack.HtmlDocument DOC =新HtmlAgilityPack.HtmlDocument();
                doc.Load(wb.DocumentStream);
             }
        }
}


解决方案

我找到简单的解决方案。刚找到字符串右边部分HTML code:

 的foreach(在root.SelectNodes(HtmlNode链接//脚本))
{
    如果(link.InnerText.Contains(+ A +))
    {
        字符串[] =可疑交易报告新的字符串[] {VAR一个=',';文件撰写};
        可疑交易报告= link.InnerText.Split序列(STR,StringSplitOptions.None);
        发件= System.Net.WebUtility.HtmlDe code序列(STR [1]);
        如果(发件!=)
        {
            打破;
        }
    }
}

have downloaded page by webbrowser and need to get mail address. But it is generated by javastript. In code i can find this script:

<script type="text/javascript" charset="utf-8">var i='&#109;a'+'i&#108;'+'&#116;o';var a='impexta&#64;impexta&#46;sk';document.write('<a href="'+i+':'+a+'" onclick="_kt.i(386728, 20);">'+a+'</a>');</script>

I read everywhere how to Invoke script, by i don't know his name. So what i want is to get "a" variable value.

EDIT: Code before:

...
WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
wb.Navigate(url);

for (; wb.ReadyState != WebBrowserReadyState.Complete; )
{
    System.Windows.Forms.Application.DoEvents();
}
...

void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
        WebBrowser wb = sender as WebBrowser;
        if (wb != null)
        {
            if (wb.ReadyState == WebBrowserReadyState.Complete)
            {
                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.Load(wb.DocumentStream);
             }
        }
}

解决方案

I found easy solution. Just finding the right part of string in HTML code:

foreach (HtmlNode link in root.SelectNodes("//script"))
{
    if (link.InnerText.Contains("+a+"))
    {
        string[] strs = new string[] { "var a='", "';document.write" };
        strs = link.InnerText.Split(strs, StringSplitOptions.None);
        outMail = System.Net.WebUtility.HtmlDecode(strs[1]);
        if (outMail != "")
        {
            break;
        }
    }
}

这篇关于C# - 获取从JavaScript的网页浏览器产生的变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆