2012-05-11 121 views
25

这是最好方式来获取网页时,刮?Html敏捷包。加载和刮网页

HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(url); 
HttpWebResponse resp = (HttpWebResponse)oReq.GetResponse(); 

var doc = new HtmlAgilityPack.HtmlDocument(); 

doc.Load(resp.GetResponseStream()); 
var element = doc.GetElementbyId("//start-left"); 
var element2 = doc.DocumentNode.SelectSingleNode("//body"); 
string html = doc.DocumentNode.OuterHtml; 

我看过HtmlWeb().Load可以获得一个网页。这是一个更好的替代加载和刮网页?


好吧,我会尝试,而不是。

HtmlDocument doc = web.Load(url); 

现在,当我得到了我的doc并没有得到这样mutch性能。没有人喜欢SelectSingleNode。我可以使用的唯一一个是GetElementById,这很有效,但我想要上课。

我需要这样做吗?

var htmlBody = doc.DocumentNode.SelectSingleNode("//body"); 
htmlBody.SelectSingleNode("//paging"); 
+0

您也可以堆叠/追加节点slects。例如:var htmlBody = doc.DocumentNode.SelectSingleNode(“// body”)。SelectSingleNode(“// paging”); –

回答

62

更容易使用HtmlWeb。

string Url = "http://something"; 
HtmlWeb web = new HtmlWeb(); 
HtmlDocument doc = web.Load(Url); 
+0

可以请你通过这个链接..有关于HtmlWeb()的一些问题。加载(Url)它不加载网页的全部内容..请帮助我//// http://stackoverflow.com/questions/18955793/为什么-htmlweb-使用loadURL-不加载页式,与全内容 –