想问下在C#的winform中是可以用webBrower和htmlDcoment来获取页面上JS执行后的网页源码,但是在。net里网页应该怎么做呢
新手,想问下在C#的winform中是可以用webBrower和htmlDcoment来获取页面上JS执行后的网页源码,但是在。net里网页应该怎么做呢。我用webClient是可以得到网站的源码,但是JS生成的部分就没了,本人新手,求教。webclient .net C# --------------------编程问答--------------------
![](/upload/20131227/8.gif)
![](/upload/20131227/7.gif)
![](/upload/20131227/8.gif)
![](/upload/20131227/1.gif)
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- webBrower控件显示网页时人家会自动调用js执行引擎执行js代码的。 --------------------编程问答--------------------
你好,我现在是学生 新人一个啊 JS说实在的真的不会 您看能不能用.net的方式给一下思路呢,如果是在winform中可以用webBrower和htmlDcoment来获取页面上JS执行后的网页源码 但是.net怎么得到呢 --------------------编程问答--------------------
![](/upload/20131227/4.gif)
不行的
我找的时候用GoogleF12 --------------------编程问答--------------------
可是在.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¶m=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
{
}
}
}
![](/upload/20131227/1385022543_472549.png)
不行的
我找的时候用GoogleF12
那我是在后台实现的创建的一个网站 在没打开的情况下怎么才能得到里面的东西呢 --------------------编程问答--------------------
webBrower控件显示网页时人家会自动调用js执行引擎执行js代码的。
可是在.net页面上是没有webBrower吧
有啊,winform里有webbrowser控件
.net 是网站没有这个对象和控件啊 --------------------编程问答--------------------
不行的
我找的时候用GoogleF12
那我是在后台实现的创建的一个网站 在没打开的情况下怎么才能得到里面的东西呢
![](/upload/20131227/7.gif)
你不打开就是不访问服务器吗,
不访问服务器你怎么打开
这是减肥早的节奏吗 --------------------编程问答--------------------
不行的
我找的时候用GoogleF12
那我是在后台实现的创建的一个网站 在没打开的情况下怎么才能得到里面的东西呢
你不打开就是不访问服务器吗,
不访问服务器你怎么打开
这是减肥早的节奏吗
说实在的我也挺迷糊 上面有代码 您先看看 --------------------编程问答-------------------- 好吧 其实我想做一个可以获取本地在线QQ的方法,这个怎么实现呢 或许是我之前的思路不对吧,最好是.net后台操作,JS神马的感觉有点来不住
![](/upload/20131227/19.gif)
好吧 其实我想做一个可以获取本地在线QQ的方法,这个怎么实现呢 或许是我之前的思路不对吧,最好是.net后台操作,JS神马的感觉有点来不住
你想通过用户访问你的网页,然后获取用户PC机上的在线QQ? --------------------编程问答--------------------
好吧 其实我想做一个可以获取本地在线QQ的方法,这个怎么实现呢 或许是我之前的思路不对吧,最好是.net后台操作,JS神马的感觉有点来不住
你想通过用户访问你的网页,然后获取用户PC机上的在线QQ?
对啊 是这个意思 我之前在学winform的时候 做了一个倒是成功了 现在学.net该怎么实现呢 --------------------编程问答--------------------
好吧 其实我想做一个可以获取本地在线QQ的方法,这个怎么实现呢 或许是我之前的思路不对吧,最好是.net后台操作,JS神马的感觉有点来不住
你想通过用户访问你的网页,然后获取用户PC机上的在线QQ?
对啊 是这个意思 我之前在学winform的时候 做了一个倒是成功了 现在学.net该怎么实现呢
winform是可以,但是web的就不行了,web端能跟PC交互的也就js,js的权限非常有限,除非你做一个activeX控件才有可能实现 --------------------编程问答-------------------- 你可以用IFrame(如果不想显示,可以隐藏)将目标页面嵌入到你的页面中,通过Iframe获取HTML就可以了。 --------------------编程问答--------------------
你可以用IFrame(如果不想显示,可以隐藏)将目标页面嵌入到你的页面中,通过Iframe获取HTML就可以了。
![](/upload/20131227/19.gif)
ifram.src的时候 我直接这样赋值
<iframe id="iframeQQCheck" runat="server" frameborder="0"></iframe>
public static string url = "http://xui.ptlogin2.qq.com/cgi-bin/qlogin";
我是这样写的 然后报错Http 400 这个是怎么回事啊
--------------------编程问答--------------------
你可以用IFrame(如果不想显示,可以隐藏)将目标页面嵌入到你的页面中,通过Iframe获取HTML就可以了。
写错了是
<iframe id="iframeQQCheck" runat="server" frameborder="0" src="<%=url%>"></iframe>--------------------编程问答--------------------
你可以用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是没错的啊 复制粘贴在浏览器可以运行啊
![](/upload/20131227/24.gif)
![](/upload/20131227/50.gif)
添加一个iframe,里面指向对应的url。。。然后你还不能拿到这个执行后的结果么。。。。。
有跨域访问的安全限制。 --------------------编程问答--------------------
你这牵扯到js跨域访问了,度娘一下你就知道了
我学.net没多长时间,js都不明白,跨域怎么整,求大神给出具体的解决方法 --------------------编程问答--------------------
你这牵扯到js跨域访问了,度娘一下你就知道了
我学.net没多长时间,js都不明白,跨域怎么整,求大神给出具体的解决方法
据我所知js跨域访问ifream里的dom,目前没有什么实现的办法。百度搜出来的办法都不符合你的要求 --------------------编程问答--------------------
![](/upload/20131227/8.gif)
![](/upload/20131227/1.gif)
自己做一个activeX控件
![](/upload/20131227/7.gif)
自己做一个activeX控件难道就没别的方法了吗,activeX控件好学么
据我所知目前没有什么好办了
补充:.NET技术 , C#