最近有个小程序需要采集网页源代码,但有的网页中JS脚本又会生成额外的代码,比如http://www.cnblogs.com/lidabo/p/4169396.html

平面设计培训,网页设计培训,美工培训,游戏开发,动画培训

 

红框部分便是另外加载的代码。

 

平面设计培训,网页设计培训,美工培训,游戏开发,动画培训

 

此处可以看到web前端是有 "操作系统" 几个字的,但查看网页源代码之后却搜不到这几个字

平面设计培训,网页设计培训,美工培训,游戏开发,动画培训

C#有个webbrowser控件可以等网页加载完之后获取浏览器上所有的网页源代码(也包括额外被JS加载进来的代码)

【第一次】试验

WebBrowser webBrowser1 = new WebBrowser();

 

private void button1_Click(object sender, EventArgs e)
{

  webBrowser1.Navigate("http://www.cnblogs.com/lidabo/p/4169396.html");

  //加载完毕后触发事件webBrowser1_DocumentCompleted
  webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

}

 

private void webBrowser1_DocumentCompleted(object sender, EventArgs e)//这个就是当网页载入完毕后要进行的操作
{

  //将webBrowser显示的代码传入richTextBox以便调试

  richTextBox1.Text = webBrowser1.DocumentText;

}

 

结果:webbrowser加载完这个页面之后,richTextBox1.Text获取的代码里面找不到  "操作系统"  几个字 , 获取的代码有1063行

网页在加载的过程中,webBrowser1_DocumentCompleted可能会触发一次以上,且相同网页可能触发次数不尽相同

有的网页会多次触发webBrowser1_DocumentCompleted,腾讯网http://www.qq.com触发了4次

 

【第二次】试验

public int i;//设置全局变量i

private void webBrowser1_DocumentCompleted(object sender, EventArgs e)
{

  i++;//以便观察这个事件被触发了多少次

网友评论