当前位置:编程学习 > C#/ASP.NET >>

想问下在C#的winform中是可以用webBrower和htmlDcoment来获取页面上JS执行后的网页源码,但是在。net里网页应该怎么做呢

新手,想问下在C#的winform中是可以用webBrower和htmlDcoment来获取页面上JS执行后的网页源码,但是在。net里网页应该怎么做呢。我用webClient是可以得到网站的源码,但是JS生成的部分就没了,本人新手,求教。
    webclient .net C# --------------------编程问答-------------------- 有没有人看到啊 很着急的恩 --------------------编程问答-------------------- 10分钟还是没人 崩溃了求高手 求大神 --------------------编程问答-------------------- 不行,自己分析js,得到需要的数据
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- webBrower控件显示网页时人家会自动调用js执行引擎执行js代码的。 --------------------编程问答--------------------
引用 3 楼 feiyun0112 的回复:
不行,自己分析js,得到需要的数据
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/


你好,我现在是学生 新人一个啊 JS说实在的真的不会 您看能不能用.net的方式给一下思路呢,如果是在winform中可以用webBrower和htmlDcoment来获取页面上JS执行后的网页源码  但是.net怎么得到呢 --------------------编程问答--------------------
不行的 
我找的时候用GoogleF12 --------------------编程问答--------------------
引用 4 楼 xiaozhu39505 的回复:
webBrower控件显示网页时人家会自动调用js执行引擎执行js代码的。

可是在.net页面上是没有webBrower吧  --------------------编程问答--------------------
引用 7 楼 q1093660446 的回复:
Quote: 引用 4 楼 xiaozhu39505 的回复:

webBrower控件显示网页时人家会自动调用js执行引擎执行js代码的。

可是在.net页面上是没有webBrower吧 

有啊,winform里有webbrowser控件
--------------------编程问答-------------------- 下面是我写的代码,在这段代码只能获取JS之前的源码 其中想要的东西没显示,但是这个东西在浏览器的元素审核可以得到,就是怎么实现可以得到元素审核的源码也就是网站JS运行后的源码呢

 protected void btnQQonlineCheck_Click(object sender, EventArgs e)
        {
            //这个代码是建立一个QQ快捷登陆页面,下面两个赋值效果一样
            string url = "http://xui.ptlogin2.qq.com/cgi-bin/qlogin";

            //http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=指定QQ号码  这个是获取QQ的基本资料
            /*  方法一获取网页代码
            //string url = "http://xui.ptlogin2.qq.com/cgi-bin/qlogin?domain=qq.com&lang=2052&qtarget=1&jumpname=&appid=549000912&ptcss=undefined&param=u1%253Dhttp%25253A%25252F%25252Fqun.qzone.qq.com%25252Fgroup&css=&mibao_css=&s_url=http%253A%252F%252Fqun.qzone.qq.com%252Fgroup&low_login=0&style=12&authParamUrl=&needVip=1&ptui_version=10028";
            WebRequest req = WebRequest.Create(url);
            //获取这个页面上的内容 显示出来的是页面的源码
            WebResponse res = req.GetResponse();
            //把读取的内容放大 输入流中并进行编码
            StreamReader reader = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("gb2312"));
            //赋值得到的是网站的源码
            //由于QQ的保护在网站源码上是找不到任何QQ号码和昵称的
            string webcontent = reader.ReadToEnd();
            //截取想要的内容
            */

            //方法二获取网站代码
            WebClient web = new WebClient();
            //如果网站打开 不处于繁忙其实就是看看网站是不是打开了
            if (web.IsBusy == false)
            {
                try
                {
                    Stream stream = web.OpenRead(url);
                    StreamReader read = new System.IO.StreamReader(stream, System.Text.Encoding.UTF8);
                    //网站的源码
                    string webContent = read.ReadToEnd();
                    TextBox1.Text = webContent;
                    //string s = webContent.Substring("");
                }
                catch (Exception ex)
                {
                    Response.Write("<script>alert('出现错误,错误信息为:" + ex + "')</script>");
                }
            }
            else
            {

            }

        }
    }

--------------------编程问答--------------------
引用 6 楼 Hsuifengershi 的回复:

不行的 
我找的时候用GoogleF12

那我是在后台实现的创建的一个网站 在没打开的情况下怎么才能得到里面的东西呢 --------------------编程问答--------------------
引用 8 楼 xiaozhu39505 的回复:
Quote: 引用 7 楼 q1093660446 的回复:

Quote: 引用 4 楼 xiaozhu39505 的回复:

webBrower控件显示网页时人家会自动调用js执行引擎执行js代码的。

可是在.net页面上是没有webBrower吧 

有啊,winform里有webbrowser控件

.net 是网站没有这个对象和控件啊 --------------------编程问答--------------------
引用 10 楼 q1093660446 的回复:
Quote: 引用 6 楼 Hsuifengershi 的回复:


不行的 
我找的时候用GoogleF12

那我是在后台实现的创建的一个网站 在没打开的情况下怎么才能得到里面的东西呢




你不打开就是不访问服务器吗,
不访问服务器你怎么打开
这是减肥早的节奏吗 --------------------编程问答--------------------
引用 12 楼 Hsuifengershi 的回复:
Quote: 引用 10 楼 q1093660446 的回复:

Quote: 引用 6 楼 Hsuifengershi 的回复:


不行的 
我找的时候用GoogleF12

那我是在后台实现的创建的一个网站 在没打开的情况下怎么才能得到里面的东西呢




你不打开就是不访问服务器吗,
不访问服务器你怎么打开
这是减肥早的节奏吗


说实在的我也挺迷糊 上面有代码 您先看看 --------------------编程问答-------------------- 好吧 其实我想做一个可以获取本地在线QQ的方法,这个怎么实现呢 或许是我之前的思路不对吧,最好是.net后台操作,JS神马的感觉有点来不住 --------------------编程问答--------------------
引用 14 楼 q1093660446 的回复:
好吧 其实我想做一个可以获取本地在线QQ的方法,这个怎么实现呢 或许是我之前的思路不对吧,最好是.net后台操作,JS神马的感觉有点来不住

你想通过用户访问你的网页,然后获取用户PC机上的在线QQ? --------------------编程问答--------------------
引用 15 楼 xiaozhu39505 的回复:
Quote: 引用 14 楼 q1093660446 的回复:

好吧 其实我想做一个可以获取本地在线QQ的方法,这个怎么实现呢 或许是我之前的思路不对吧,最好是.net后台操作,JS神马的感觉有点来不住

你想通过用户访问你的网页,然后获取用户PC机上的在线QQ?

对啊  是这个意思 我之前在学winform的时候 做了一个倒是成功了 现在学.net该怎么实现呢 --------------------编程问答--------------------
引用 16 楼 q1093660446 的回复:
Quote: 引用 15 楼 xiaozhu39505 的回复:

Quote: 引用 14 楼 q1093660446 的回复:

好吧 其实我想做一个可以获取本地在线QQ的方法,这个怎么实现呢 或许是我之前的思路不对吧,最好是.net后台操作,JS神马的感觉有点来不住

你想通过用户访问你的网页,然后获取用户PC机上的在线QQ?

对啊  是这个意思 我之前在学winform的时候 做了一个倒是成功了 现在学.net该怎么实现呢


winform是可以,但是web的就不行了,web端能跟PC交互的也就js,js的权限非常有限,除非你做一个activeX控件才有可能实现 --------------------编程问答-------------------- 你可以用IFrame(如果不想显示,可以隐藏)将目标页面嵌入到你的页面中,通过Iframe获取HTML就可以了。 --------------------编程问答--------------------
引用 18 楼 wangyucai0915 的回复:
你可以用IFrame(如果不想显示,可以隐藏)将目标页面嵌入到你的页面中,通过Iframe获取HTML就可以了。


ifram.src的时候 我直接这样赋值
<iframe id="iframeQQCheck" runat="server" frameborder="0"></iframe>

public static string url = "http://xui.ptlogin2.qq.com/cgi-bin/qlogin";

我是这样写的 然后报错Http 400 这个是怎么回事啊
--------------------编程问答--------------------
引用 18 楼 wangyucai0915 的回复:
你可以用IFrame(如果不想显示,可以隐藏)将目标页面嵌入到你的页面中,通过Iframe获取HTML就可以了。

写错了是
<iframe id="iframeQQCheck" runat="server" frameborder="0" src="<%=url%>"></iframe>
--------------------编程问答--------------------
引用 19 楼 q1093660446 的回复:
Quote: 引用 18 楼 wangyucai0915 的回复:

你可以用IFrame(如果不想显示,可以隐藏)将目标页面嵌入到你的页面中,通过Iframe获取HTML就可以了。


ifram.src的时候 我直接这样赋值
<iframe id="iframeQQCheck" runat="server" frameborder="0"></iframe>

public static string url = "http://xui.ptlogin2.qq.com/cgi-bin/qlogin";

我是这样写的 然后报错Http 400 这个是怎么回事啊

是不是你的URL写错了。。百度下400错误的解释吧。好像是DNS无法解析? --------------------编程问答-------------------- url是没错的啊  复制粘贴在浏览器可以运行啊 --------------------编程问答-------------------- 求大神 求高手.... --------------------编程问答-------------------- 添加一个iframe,里面指向对应的url。。。然后你还不能拿到这个执行后的结果么。。。。。 --------------------编程问答--------------------
引用 24 楼 starfd 的回复:
添加一个iframe,里面指向对应的url。。。然后你还不能拿到这个执行后的结果么。。。。。
这个我试了啊 可是报错http400 怎么回事呢 链接什么的没错啊 --------------------编程问答-------------------- 你这牵扯到js跨域访问了,度娘一下你就知道了 --------------------编程问答-------------------- 你即使能成功从ifream打开那个网址,你的JS也访问不了ifream里的内容。
有跨域访问的安全限制。 --------------------编程问答--------------------
引用 26 楼 xiaozhu39505 的回复:
你这牵扯到js跨域访问了,度娘一下你就知道了

我学.net没多长时间,js都不明白,跨域怎么整,求大神给出具体的解决方法 --------------------编程问答--------------------
引用 28 楼 q1093660446 的回复:
Quote: 引用 26 楼 xiaozhu39505 的回复:

你这牵扯到js跨域访问了,度娘一下你就知道了

我学.net没多长时间,js都不明白,跨域怎么整,求大神给出具体的解决方法


据我所知js跨域访问ifream里的dom,目前没有什么实现的办法。百度搜出来的办法都不符合你的要求 --------------------编程问答-------------------- 。。。。那换种方法不用iframe呢 --------------------编程问答-------------------- 自己做一个activeX控件 --------------------编程问答--------------------
引用 31 楼 xiaozhu39505 的回复:
自己做一个activeX控件
难道就没别的方法了吗,activeX控件好学么 --------------------编程问答--------------------
引用 32 楼 q1093660446 的回复:
Quote: 引用 31 楼 xiaozhu39505 的回复:

自己做一个activeX控件
难道就没别的方法了吗,activeX控件好学么


据我所知目前没有什么好办了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,