2012-05-11 12 views
25

Ist dies die beste Weg, um eine Webseite beim Kratzen zu bekommen?Html Agility Pack. Laden und scrape Webseite

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; 

Ich habe HtmlWeb().Load gesehen, um eine Webseite zu bekommen. Ist das eine bessere Alternative zum Laden und zum Abschaben der Webseite?


Ok, ich werde das stattdessen versuchen.

HtmlDocument doc = web.Load(url); 

Jetzt, als ich meine doc bekam und nicht so mutch Eigenschaften hat. Niemand mag SelectSingleNode. Der einzige, den ich verwenden kann, ist GetElementById, und das funktioniert, aber ich möchte eine Klasse bekommen.

Muss ich es so machen?

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

Sie können auch Knotensects stapeln/anhängen. zB: var htmlBody = doc.DocumentNode.SelectSingleNode ("// body"). SelectSingleNode ("// paging"); –

Antwort

62

Viel einfacher zu verwenden HtmlWeb.

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

können Sie bitte über diesen Link ..hat ein Problem in Bezug auf HtmlWeb(). Laden (Url) es nicht laden vollständigen Inhalt der Webseite .. bitte helfen Sie mir //// http://StackOverflow.com/Questions/18955793/ why-htmlweb-loadurl-lädt nicht die Seite mit vollem Inhalt –

Verwandte Themen