http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 13221|回复: 18

[综合] c# 的 webbrowser 怎么读取不到 html 的元素?

[复制链接]
发表于 2014-7-17 11:11:27 | 显示全部楼层 |阅读模式
本帖最后由 hyw322 于 2014-7-17 11:33 编辑

richTextBoxTest.Text += webBrowser1.Document.GetElementById("kename").GetAttribute("value");

在这句报错,经过测试发现,这样的错误时根本找不到ID为“kename”的元素,但是网页源代码明明是可以看到的。不单是这一个元素,其他好多元素都是这个样。




两种情况:
1.在线登陆到这个页面,就出错了。
2.把网页源代码保存到本地,webbrowser.navigator本地的源代码就不会出错,结果也正确。

请问大侠们,这是怎么回事呢?


不好意思,不会设置,怎么下载还扣钱呢,需要免费资源的大侠留个邮箱。
报错截图.jpg

html源文件.rar

7.73 KB, 下载次数: 29, 下载积分: 金钱 -1



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-7-17 12:12:41 | 显示全部楼层
你确定这个对象存在吗,
 楼主| 发表于 2014-7-17 13:30:18 | 显示全部楼层
附件的html源文件就是这个网页的代码,通过c#保存下来的。
这是其中kename的片段:
<table class="table_list" align="center"width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
                <th>客户信息:</th>
                <th></th>
        </tr>
        <tbody>
        <tr>
                <td class="table_list_right" width="20%">
                        客户名称:&nbsp;
                </td>
                <td class="table_list_left" width="80%"  id="kename" style="font-size: 12pt;letter-spacing: 1px;font-weight: bold">
                </td>
        </tr>
        <tr>
                <td class="table_list_right" width="20%">
                        相关信息:&nbsp;
                </td>
                <td class="table_list_left" width="80%" id="othertd" style="font-size: 12pt;letter-spacing: 1px;font-weight: bold">
                </td>
        </tr>
    </tbody>
</table>
 楼主| 发表于 2014-7-17 13:32:39 | 显示全部楼层
站长苏飞 发表于 2014-7-17 12:12
你确定这个对象存在吗,

                <td class="table_list_left" width="80%"  id="kename" style="font-size: 12pt;letter-spacing: 1px;font-weight: bold">
                </td>

这是其中一点代码,具体请往下看。完整的html源代码在附件。谢谢。
 楼主| 发表于 2014-7-17 13:34:06 | 显示全部楼层
站长苏飞 发表于 2014-7-17 12:12
你确定这个对象存在吗,

                <td class="table_list_left" width="80%"  id="kename" style="font-size: 12pt;letter-spacing: 1px;font-weight: bold">
                </td>
这是其中的一点片段,具体往下看。完整的html源文件在附件。谢谢。非常感谢你帮了我的大忙,真的太感谢你啦!
 楼主| 发表于 2014-7-17 13:34:20 | 显示全部楼层
站长苏飞 发表于 2014-7-17 12:12
你确定这个对象存在吗,

                <td class="table_list_left" width="80%"  id="kename" style="font-size: 12pt;letter-spacing: 1px;font-weight: bold">
                </td>
这是其中的一点片段,具体往下看。完整的html源文件在附件。谢谢。非常感谢你帮了我的大忙,真的太感谢你啦!
发表于 2014-7-17 13:36:49 | 显示全部楼层
document.all然后再获取看看
 楼主| 发表于 2014-7-17 13:44:02 | 显示全部楼层
站长苏飞 发表于 2014-7-17 13:36
document.all然后再获取看看

richTextBoxTest.Text += webBrowser1.Document.All.GetElementsByName("");

Document.All只有ByName,没有ById...
发表于 2014-7-17 13:49:04 | 显示全部楼层
使用webBrowser1.Document.GetElementById("kename")可以获取啊,这里面说的肯定不是这个错,是没有Value这个属性,这个可以直接。出来的,不需要使用方法获取
 楼主| 发表于 2014-7-17 13:55:16 | 显示全部楼层
站长苏飞 发表于 2014-7-17 13:49
使用webBrowser1.Document.GetElementById("kename")可以获取啊,这里面说的肯定不是这个错,是没有Value这 ...

                <td class="table_list_right" width="10%" height="45px">
                        <INPUT class="" style="float:left;font-size: 25pt;font-weight:bold;line-height: 35px;
                                height: 35px;width: 300px;vertical-align: middle;letter-spacing: 2px;border:1px solid #b8cedb;"
                                name="pay.mobileNoForGuest" id="mobileNoForGuest" maxlength="11" onfocus="clsInfo()"
                 onblur="checkValueIsChinaMobile(this,'请输入正确的号码格式!',false);"
                 value=""
                 
            />
            &nbsp;&nbsp;&nbsp;&nbsp;
                         
                </td>


这个“mobileNoForGuest”有value也是一样的报错。
最关键的是,我把源文件保存到本地是可以的,在线登陆就报错。
需要的话我发c#代码给你吧,登陆的账号,密码,短信验证码都可以发给你,帮忙登陆试试。非常感谢你帮了我的大忙,真的太感谢你啦!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-18 19:13

© 2014-2021

快速回复 返回顶部 返回列表