Ich versuche, einige Informationen von einer Website zu kratzen, kann aber keine Lösung finden, die für mich funktioniert. Jeder Code, den ich im Internet lese, erzeugt mindestens einen Fehler für mich.
Schon der Beispielcode auf ihrer Homepage erzeugt Fehler für mich.
Mein Code:
HtmlDocument doc = new HtmlDocument();
doc.Load("https://www.flashback.org/u479804");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
Erzeugt den folgenden Fehler:
'HtmlDocument' ist eine mehrdeutige Referenz zwischen 'System.Windows.Forms.HtmlDocument' und 'HtmlAgilityPack.HtmlDocument' C: * \ Form1.cs
Bearbeiten: Mein gesamter Code befindet sich hier: http://beta.yapaste.com/55
Alle Hilfe wird sehr geschätzt!
Verwenden Sie HtmlAgilityPack.HtmlDocument
:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
Der Compiler wird verwirrt, da zwei der Namespaces, die Sie mit dem Import importiert haben using
Klassen mit dem Namen HtmlDocument
- den HTML Agility Pack-Namespace und den Windows Forms-Namespace. Sie können dies umgehen, indem Sie angeben, welche Klasse Sie explizit verwenden möchten.
So habe ich es erreicht. Beachten Sie, dass im Beispiel für das HTML-Agility-Pack in jeder Zeile doc.DocumentElement.SelectNodes ("// a [@href"]) ein Codefehler angegeben ist. Das richtige und getestete ist unten angegeben.
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(@"http://adityabajaj.com");
StringBuilder sb = new StringBuilder();
List<string> lstHref = new List<string>();
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]").Distinct())
{
string curHref = link.Attributes["href"].Value;
if(!lstHref.Contains(curHref))
lstHref.Add(curHref);
}
foreach (string str in lstHref)
{
sb.Append(str +"<br />");
}
Response.Write (sb.ToString());
Da es für mich funktioniert hat, dachte ich, ich sollte teilen.