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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

12
返回列表 发新帖
楼主: hyw322

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

[复制链接]
发表于 2014-7-17 13:57:23 | 显示全部楼层
这里面有并不表示C#里面有,你点个点就明白了,里面有属性的。不要使用方法获取。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-7-17 13:58:11 | 显示全部楼层
webBrowser1.Document.GetElementById("控件ID").InnerText;
 楼主| 发表于 2014-7-17 14:03:55 | 显示全部楼层
站长苏飞 发表于 2014-7-17 13:58
webBrowser1.Document.GetElementById("控件ID").InnerText;

1.最开始就用的innertext,不行才换的getAttribute,等会我再试试innertext
2.直接打点的话,之有.Id,没有其他属性,并且
  if (webBrowser1.Document.GetElementById("kename").Id == "kename")
  这样也同样报错
发表于 2014-7-17 14:07:55 | 显示全部楼层
hyw322 发表于 2014-7-17 14:03
1.最开始就用的innertext,不行才换的getAttribute,等会我再试试innertext
2.直接打点的话,之有.Id, ...

kename是个TD,怎么可能会有Value呢?就是innertext如果不对只有一种情况,你用的不是这个页面的源码,或者是不是Webbroser控件。你看你截图上打的控件名字就不对
 楼主| 发表于 2014-7-17 14:12:22 | 显示全部楼层
站长苏飞 发表于 2014-7-17 14:07
kename是个TD,怎么可能会有Value呢?就是innertext如果不对只有一种情况,你用的不是这个页面的源码,或 ...

                <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>

这是图片显示的那个元素的代码,和“kename”是在同一个页面的。
我用InnerText试试kename受教了,学习中……
 楼主| 发表于 2014-7-17 14:32:19 | 显示全部楼层
站长苏飞 发表于 2014-7-17 13:58
webBrowser1.Document.GetElementById("控件ID").InnerText;

保存在本地的html源文件:
webBrowser1.Document.GetElementById("mobileNoForGuest").GetAttribute("value");
这句功能是对的,上网操作就报错,这才是最诡异的,请问怎么破?膜拜中……
 楼主| 发表于 2014-7-17 15:30:48 | 显示全部楼层
站长苏飞 发表于 2014-7-17 13:58
webBrowser1.Document.GetElementById("控件ID").InnerText;

InnerText也不行。
把网页保存在本地操作没问题的话,我想代码自身是问题不大的。。。
关键是为什么上网登录后不行,上网登录操作的是webBrowser1.Document,保存网页用的是webBrowser1.DocumentText,这两者之间有区别吗?会是编码的问题吗?
发表于 2014-7-17 15:41:41 | 显示全部楼层
这种情况,我估计有两种可能,第一是加载的时候页面内容并没有在上面显示,只有保存时才有,你可以使用Httphelper获取一下看看是不是有这些东西。如果有就说明没事,如果没有说明有问题。

还有一种情况,就是JS修改值了,在运行时JS限制。
 楼主| 发表于 2014-7-17 16:43:24 | 显示全部楼层
站长苏飞 发表于 2014-7-17 15:41
这种情况,我估计有两种可能,第一是加载的时候页面内容并没有在上面显示,只有保存时才有,你可以使用Http ...

                HttpItem item = new HttpItem()
                {
                    URL = "http://www.baidu.com/",
                    Method = "get"
                };

                HttpHelper http = new HttpHelper();
                HttpResult result = http.GetHtml(item);

                StreamWriter sw = new StreamWriter(@"D:\0.txt");
                sw.Write(result.Html);
                sw.Close();

是这个意思吗?打开保存的文件后,有点乱:
(先在百度首页试了一下,如果是保存这样的文件的话,我再登录kename那个首页保存一下看看)

<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><link rel="dns-prefetch" href="//s1.bdstatic.com"/><link rel="dns-prefetch" href="//t1.baidu.com"/><link rel="dns-prefetch" href="//t2.baidu.com"/><link rel="dns-prefetch" href="//t3.baidu.com"/><link rel="dns-prefetch" href="//t10.baidu.com"/><link rel="dns-prefetch" href="//t11.baidu.com"/><link rel="dns-prefetch" href="//t12.baidu.com"/><title>百度一下,你就知道</title><style index="index" >html,body{height:100%}html{overflow-y:auto}#wrapper{position:relative;_position:;min-height:100%}#content{padding-bottom:100px;text-align:center}#ftCon
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-5-23 21:05

© 2014-2021

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