WebBrowser如何获得网页中某段HTML代码控件里面的值?

Honyun100 2016-04-28 09:32:23
话不多说,先贴代码。
我WebBrowser获取到一段网页上的HTML代码。

//得到当前表格数据的行数
IList<HtmlElement> rowHtmlElements = webBrowser.Document.GetElementsByTagName("tr").Cast<HtmlElement>().Where(f => f.GetAttribute("ClassName") == "analysis-item" || f.GetAttribute("ClassName") == "analysis-item odd").ToList();
foreach (HtmlElement rowHtmlElement in rowHtmlElements)
{
//得到当前表格的列
IList<HtmlElement> columnHtmlElements = rowHtmlElement.GetElementsByTagName("td").Cast<HtmlElement>().ToList();
foreach (HtmlElement columnHtmlElement in columnHtmlElements)
{

}
}

这个是HTML代码,是从网页上面获取到的HTML代码。

<td style="width: 23.5px; height: 29.5px;" colspan="2">
<input name="spdata[][id]" tabindex="200" class="id" id="spdata__id" type="hidden" value="11968481">
<span class="idx" style="display: inline;">1、</span>
</td>
<td align="left" style="width: 160.5px; height: 30.5px;" colspan="5">
<input name="spdata[][spdata_0]" tabindex="201" title="二氧化硫残留量" class="JYXM inputText" style="width: 160px;" readonly="readonly" value="二氧化硫残留量">
</td>
<td align="left" style="width: 100.5px; height: 31.5px;" colspan="3">
<span><input name="spdata[][spdata_1]" tabindex="202" title="" class="JYJG inputText" style="width: 100px;" value=""></span>
</td>

现在我通过代码

IList<HtmlElement> columnHtmlElements = rowHtmlElement.GetElementsByTagName("td").Cast<HtmlElement>().ToList();
foreach (HtmlElement columnHtmlElement in columnHtmlElements)
{

}

能获取到

<input name="spdata[][spdata_0]" tabindex="201" title="二氧化硫残留量" class="JYXM inputText" style="width: 160px;" readonly="readonly" value="二氧化硫残留量">

我现在要获取到“二氧化硫残留量”这个值,并且我要重新设置<input name="spdata[][spdata_1]" tabindex="202" title="" class="JYJG inputText" style="width: 100px;" value="">这个空间的值。
在下愚笨,想了一下午没想出来。有没有大神help me!!!
...全文
223 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Honyun100 2016-04-29
  • 打赏
  • 举报
回复
引用 4 楼 FoxDave 的回复:
节点取出来再拿一下属性就行了啊
具体怎么取啊?我现在是这样的。

//得到当前表格数据的行数
            IList<HtmlElement> rowHtmlElements = webBrowser.Document.GetElementsByTagName("tr").Cast<HtmlElement>().Where(f => f.GetAttribute("ClassName") == "analysis-item" || f.GetAttribute("ClassName") == "analysis-item odd").ToList();
            foreach (HtmlElement rowHtmlElement in rowHtmlElements)
            {
                //得到当前表格的列
                IList<HtmlElement> columnHtmlElements = rowHtmlElement.GetElementsByTagName("td").Cast<HtmlElement>().ToList();
                foreach (HtmlElement columnHtmlElement in columnHtmlElements)
                {
                    if (columnHtmlElement.GetElementsByTagName("span").Count > 0)
                    {
                        foreach (HtmlElement item in columnHtmlElement.GetElementsByTagName("span"))
                        {
                            if (item.GetElementsByTagName("input").Count > 0)
                            {
                                switch (item.All[0].GetAttribute("ClassName"))
                                {
                                    case "JYJG inputText":
                                        item.All[0].SetAttribute("value", "ss");
                                        break;
                                    case "JGDW inputText":
                                        item.All[0].SetAttribute("value", "ss");
                                        break;
                                    default:
                                        break;
                                }
                            }
                            else if (item.GetElementsByTagName("select").Count > 0)
                            {
                                switch (item.All[0].GetAttribute("ClassName"))
                                {
                                    case "jy_select JGPD":
                                        item.All[0].SetAttribute("value", "不合格项");
                                        item.All[0].SetAttribute("title", "不合格项");
                                        break;
                                    default:
                                        break;
                                }
                            }
                        }
                    }
                    else
                    {
                        var xx = columnHtmlElement.All[0].GetAttribute("value");
                    }
                }
            }
有没有更好的办法呢?主要是HtmlElement 类没有好多HtmlDocument的属性和方法。
Honyun100 2016-04-29
  • 打赏
  • 举报
回复
引用 2 楼 rocmemory 的回复:
columnHtmlElement.Arributes["title"] 或者 columnHtmlElement.GetArributeByName("title")
HtmlElement对象里面没有这个属性和方法。我现在用columnHtmlElement.All[0].GetAttribute()或者SetAttribute()能设置值和查找到值。
Justin-Liu 2016-04-29
  • 打赏
  • 举报
回复
节点取出来再拿一下属性就行了啊
为轮子而生 2016-04-29
  • 打赏
  • 举报
回复
修改值可以用SetAttribute
为轮子而生 2016-04-29
  • 打赏
  • 举报
回复
columnHtmlElement.Arributes["title"] 或者 columnHtmlElement.GetArributeByName("title")
秋的红果实 2016-04-28
  • 打赏
  • 举报
回复
既然找到了这个元素,用innerText属性就可以读取或设置其值
▲软件名称:《十万个为什么-计算机应用技巧大全》 ▲使用的第三方控件(随源代码提供): 1、Flatstyle 平面控件 2、OutLookBar 仿 OutLook 滑动菜单控件 3、Microsoft HTML Object Library[Version4.0] ActiveX (.ocx) 控件, 安装后,在 %Delphi5%\Imports\ 路径下生成文件 MSHTML_TLB.dcu 文件,非常大,影响编译速度(建议按 Ctrl+F9 键编译)。在程序要加入 uses 段。该控件随 Microsoft 的 IE 浏览器一同安装在 Windows , 必须在 Delphi 安装引入。 4、Delphi 的 TextData 控件。 ▲开发及运行环境: 本软件在文 Windows98 下使用 Delphi5.0 企业版开发,可以运行在 Windows 各系列版本下。由于使用了 WebBrowser 控件的扩展功能,所以与各机器所安装的 IE 的版本关系较大,如果软件运行时报错,请升级到 IE5.0 后试试。 ▲使用的第三方控件(随源代码提供): 1、Flatstyle 平面控件 2、OutLookBar 仿 OutLook 滑动菜单控件 3、Microsoft HTML Object Library[Version4.0] ActiveX (.ocx) 控件, 安装后,在 %Delphi5%\Imports\ 路径下生成文件 MSHTML_TLB.dcu 文件,非常大,影响编译速度(建议按 Ctrl+F9 键编译)。在程序要加入 uses 段。该控件随 Microsoft 的 IE 浏览器一同安装在 Windows , 必须在 Delphi 安装引入。 4、Delphi 的 TextData 控件。 ▲全局热键及功能: F1 打开帮助 F3 查找 F9 自动滚屏切换 Ctrl+O 打开外部文档 Esc 关闭“打开外部文档”对话框 Ctrl+Q 关闭程序 ▲主要编程技术及实现的功能: 1、全新的图形窗口界面,区别于 Windows 传统的标准界面风格; 2、更换皮肤外壳功能; 3、更换语言功能; 4、通过网页链接操作程序内过程技术; 5、屏幕滚动的方向和速度可以根据鼠标的位置和纵向坐标进行动态调节。 当鼠标位于当前屏幕的上半部分时,屏幕向上滚动,鼠标位置越靠上, 屏幕向上滚动的速度越快;当鼠标位于当前屏幕的下半部分时, 屏幕向下滚动,鼠标位置越靠下,屏幕向下滚动的速度越快。 同时,速度是自动连续调节的。自动调节和滚动条拖拉可以叠加。 6、注册表、ini 文件的操作; 7、制作完全功能的对话框; 8、浏览器控件 WebBrowser 编程技巧; 9、控件的动画显示/隐藏编程; 10、程序运行状态的保存和恢复; 11、在桌面、开始菜单、程序组、收藏夹创建快捷方式技巧; 12、在 IE 的工具栏和 Tools 菜单动态添加/删除按钮和菜单项技术; 13、注册机编程方法; 14、Dll 动态链接库的存取; 15、全局热键的定义:无论焦点在哪个控件上,只要在同一线程内,都可以激活该热键。 应用了 Windows 的消息处理机制。 16、浏览窗口支持文件拖放。 17、软件运行后自动记录运行日志。 ▲安装及运行: 本软件是纯绿色软件,直接解压到某文件夹下即可运行。 主文件是 Why100000.exe。当然,为了使用方便,可以在打开主程序后, 进入设置界面, 给桌面等地方添加本程序的快捷方式。 ▲本软件的发行方式: 注:注册码见下: Name:crsky Code:212221271317

111,112

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧