首页 新闻 搜索 专区 学院

winform关于webBrowser控件使用的问题

0
悬赏园豆:60 [已解决问题] 解决于 2015-04-23 12:02


用webBrowser控件套了一个a页面(a页面是外网一个页面),当点击开始按钮的时候,会触发页面“更多”事件(此事件为Ajax请求),页面会加载最新数据,当加载完最新数据后把webBrowser1.DocumentStream流写入到我本地磁盘一个b页面,然后去浏览b页面内容,但b页面内容是a页面第一次加载的内容,并没有获取到“点击更多”后最新数据内容。把webBrowser1.DocumentStream流写入html文件的代码如下:

C# code?
1
2
3
4
5
6
7
8
Encoding encoding = Encoding.GetEncoding(webBrowser1.Document.Encoding);
string path = "c:\\b.html";
StreamReader sr = new StreamReader(webBrowser1.DocumentStream, encoding);
StreamWriter sw = new StreamWriter(path);
sw.Write(sr.ReadToEnd());
sw.Flush();
sw.Close();
sr.Close();

 

C# code?
1
2
3
4
5
6
 byte[] _HtmlByte = new byte[webBrowser1.Document.Body.OuterHtml.Length];
 webBrowser1.DocumentStream.Position = 0;
 webBrowser1.DocumentStream.Read(_HtmlByte, 0, _HtmlByte.Length);
 FileStream _FileStream = new FileStream(@"C:\b.html", System.IO.FileMode.Create);
_FileStream.Write(_HtmlByte, 0, _HtmlByte.Length);
_FileStream.Close();


注:以上两种方式只能获取到webBrowser1第一次加载的内容

然后尝试用File.WriteAllText(@"C:\b.html", webBrowser1.Document.Body.OuterHtml, Encoding.Unicode)这种方式,这种方式虽然获取到了webBrowser最新内容(也就是a页面最新内容),但页面显示样式是错乱的,图片也看不见(webBrowser1.Document.Body.OuterHtml获取的只是一个string字符串,而不是流的方式;如果以webBrowser1.DocumentStream流的方式写入,浏览本地磁盘页面样式是完整的,图片也能看见)。

本人想以流的方式写入到一个html页面,但webBrowser1.DocumentStream流不是最新内容,希望各位大侠帮下忙,看有什么好的办法没有,在此先感谢大家了!~

RedLaugh的主页 RedLaugh | 初学一级 | 园豆:71
提问于:2014-06-19 17:18
< >
分享
最佳答案
0

兄弟,你的想法貌似没说明确,且做法存在问题。首先,你是只是想获取b页面的html么?如果是的话,那么你现在获取到的就是正确的。如果是想做相当于浏览器把整个网页另存为的做法的话,那么就不正确了。你需要获取b页面的所有样式地址,js链接地址。图片地址并都保存下来,这样整个页面就ok啦

收获园豆:30
qqnihao | 菜鸟二级 |园豆:237 | 2014-06-20 00:32
其他回答(1)
0

"更多"加载完后,

调 File.WriteAllText(@"C:\b.html", webBrowser1.DocumentText, Encoding.Unicode)保存为文件

然后读取b.html文件的流

webBrowser1.DocumentStream = b.html的文件流

收获园豆:30
boyxq | 园豆:234 (菜鸟二级) | 2014-06-19 22:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册