C# - 获取从JavaScript的网页浏览器产生的变量 [英] C# - Get variable from webbrowser generated by javascript
本文介绍了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='ma'+'il'+'to';var a='impexta@impexta.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屋!
查看全文