抓取动态网页
由于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 }