C#关于获取网页Activex控件中的代码

迷路的指南针 迷路的指南针 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
小菜最近想做一个页面解析的软件,但是我发现有的网页中如果夹杂了Activex控件的话,这部分的内容就无法获得。用的C#的代码:先用做了一个WebBrowser浏览器,当跳到了想要解析的浏览器时,点击解析,然后获得浏览器里面的源代码,这样就解决了需要Ssesion验证的问题,可以获得需要用户登录后的界面的信息,但是现在,小菜发现获得的源代码里面没有Activex控件中的内容,小菜就是想获得。现在求教。代码如下
private void Analyze_Click(object sender, EventArgs e)
{
#region 获得网页的html
string html = "";
try
{

/*string url = WebBrowser.Url.ToString();
System.Net.WebClient aWebClient = new System.Net.WebClient();
aWebClient.Encoding = System.Text.Encoding.Default;
html = aWebClient.DownloadString("file:///E:/学习/大三课程/Test.htm");*/
StreamReader sr = new StreamReader(WebBrowser.DocumentStream, Encoding.Default);
html = sr.ReadToEnd();
//html = WebBrowser.DocumentText;
FileInfo fi = new FileInfo("E:\\test.txt");
FileStream fs;
if (fi.Exists)
{
fs = fi.Open(FileMode.CreateNew);
}
else
{
fs = fi.Create();
}
StreamWriter bw = new StreamWriter(fs);
bw.Write(html);
bw.WriteLine("测试");
bw.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
#endregion
#region 分析网页html节点
//Lexer词法分析器直接解析HTML,Lexer中真正执行词法分析的是NextCode()方法
Lexer lexer = new Lexer(html);
//解析
Parser parser = new Parser(lexer);
//获取我们想要的节点,类似于NodeList nodes = parser.parse(new MyNodeFilter(new String[]{"INPUT","FONT"}));获取INPUT和FONT节点
//NodeList htmlNodes = parser.Parse(null);
NodeList htmlNodes = parser.Parse(new TagNameFilter("TABLE"));
this.treeView1.Nodes.Clear();
this.treeView1.Nodes.Add("root");
TreeNode treeRoot = this.treeView1.Nodes[0];
for (int i = 0; i < htmlNodes.Count; i++)
{
//获取所有的节点
this.RecursionHtmlNode(treeRoot, htmlNodes[i], false);
}
#endregion

}
private void RecursionHtmlNode(TreeNode treeNode, INode htmlNode, bool siblingRequired)
{
//如果节点不为空
if (htmlNode == null || treeNode == null) return;
TreeNode current = treeNode;
TreeNode content ;
//标签
if (htmlNode is ITag)
{
ITag tag = (htmlNode as ITag);
//if (!tag.IsEndTag())
//{
string nodeString = tag.TagName;
if (tag.Attributes != null && tag.Attributes.Count > 0)
{
if (tag.Attributes["ID"] != null)
{
nodeString = nodeString + " { id=\"" + tag.Attributes["ID"].ToString() + "\" }";
}
if (tag.Attributes["HREF"] != null)
{
nodeString = nodeString + " { href=\"" + tag.Attributes["HREF"].ToString() + "\" }";
}
if (tag.Attributes["TD"] != null)
{
nodeString = nodeString + " { td = \""+tag.Attributes["TD"].ToString()+"\" }";
}
}

current = new TreeNode(nodeString);
treeNode.Nodes.Add(current);
//}
}
//获取节点间的内容
if (htmlNode.Children != null && htmlNode.Children.Count > 0)
{
this.RecursionHtmlNode(current, htmlNode.FirstChild, true);
content = new TreeNode(htmlNode.FirstChild.GetText());
treeNode.Nodes.Add(content);
}
//the sibling nodes
if (siblingRequired)
{
INode sibling = htmlNode.NextSibling;
while (sibling != null)
{
this.RecursionHtmlNode(treeNode, sibling, false);
sibling = sibling.NextSibling;
}
}
}
实际的运行情况如下:
网页的原样:
...全文

相关推荐

网页调用ActiveX控件(获取串口数据)

网页上调用已开发的ActiveX控件(控件功能:获取串口数据)适用于ID卡刷卡时读取卡条码(支持读卡器型号:Mango6H10d)

hongxm520

C#开发与网页交互的ActiveX控件实战教程

ActiveX控件是一种由微软公司提出的技术,允许开发者创建可以在Internet Explorer等Web浏览器中运行的可重用组件。这些控件基于COM(Component Object Model)技术构建,提供了丰富的交互功能,能够支持复杂的数据处理和图形界面表现。ActiveX控件的使用场景多样,从简单的用户界面元素到高级的媒体播放器和安全协议,ActiveX在过去曾是实现Web交互的关键技术。然而,随着Web技术的发展,安全性和跨平台兼容性问题逐渐显现,导致ActiveX控件的使用逐渐减少。

DarthP

C#编写ActiveX网页截图控件

主要介绍了C#编写ActiveX网页截图控件,作为学习C#编写ActiveX的一个简单入门教程,感兴趣的小伙伴们可以参考一下

weixin_38618024

c# 编写activex控件 并与网页交互

c# 编写activex控件 并与网页交互,传递数据给网页,调用网页方法 例子 c# 编写activex控件 并与网页交互,传递数据给网页,调用网页方法 例子

az44yao

网页调用海康威视摄像头,C#开发调用海康威视摄像头控件

本Demo包含海康威视摄像头调用的ActiveX控件制作及调用代码,功能强大(压缩包包含三个文件,一个是ActiveX控件开发项目、一个是控件调用项目、另一个是说明文档)

Dev_Zhang
评论 2
收藏 已收藏
分享
返回顶部
迷路的指南针
C# 111,128 成员 642,537 内容