抓取动态网页

  由于ajax技术,很多网页的内容都是动态加载的,而spider抓取网页信息一般是跳过js加载的,下面记录一下前几天抓取百度地图页面的方法,以做备忘。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Windows.Forms;//控制台程序利用WebBrowser控件实现
 6 using System.Threading;
 7 using System.IO;
 8   
 9  namespace ConsoleApplication2
10  {
11      public class Program
12      {
13          [STAThread]//控制台程序设置STAThread标记。
14          static void Main(string[] args)
15          {
16              string url = "http://map.baidu.com/?newmap=1&ie=utf-8&s=s&wd=宁波市 阿里山路"; 
17              WebBrowser browser = new WebBrowser(); 
18              browser.ScriptErrorsSuppressed = true;  
19              browser.Navigate(url); 
20              while (browser.ReadyState != WebBrowserReadyState.Complete)
21              {
22                  Application.DoEvents();//让操作系统执行其他的事件
23              }
24              var htmldocument = (mshtml.HTMLDocument)browser.Document.DomDocument; //添加Micorsoft.mshtml的引用
25              string gethtml = htmldocument.documentElement.outerHTML; 
26              //写入文件
27              using (StreamWriter sw = new StreamWriter("d://1.html"))
28              {
29                  sw.WriteLine(gethtml);
30              } 
31              Console.WriteLine("html 文件 生成!"); 
32              Console.Read();
33          }
34      }
35  }

 

posted @ 2013-01-05 16:27  一个坟头  阅读(481)  评论(0编辑  收藏  举报