Ich versuche, HtmlAgilityPack zum Parsen einer Webseiteninformation zu verwenden. Das ist mein Code:
using System;
using HtmlAgilityPack;
namespace htmparsing
{
class MainClass
{
public static void Main (string[] args)
{
string url = "https://bugs.eclipse.org";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);
foreach(HtmlNode node in doc){
//do something here with "node"
}
}
}
}
Aber als ich versuchte, auf doc.DocumentElement.SelectNodes
zuzugreifen, doc.DocumentElement.SelectNodes
ich DocumentElement
in der Liste nicht sehen. Ich habe die HtmlAgilityPack.dll in den Referenzen hinzugefügt, aber ich weiß nicht, was das Problem ist.
Ich habe einen Artikel, der das Scraping von DOM-Elementen mit HAP (HTML Agility Pack) unter Verwendung von ASP.NET demonstriert. Es lässt Sie einfach Schritt für Schritt durch den gesamten Prozess gehen. Sie können es sich ansehen und ausprobieren.
Scraping von HTML-DOM-Elementen mit HtmlAgilityPack (HAP) in ASP.NET
und über deinen Prozess funktioniert es gut für mich. Ich habe es auf diese Weise versucht, wie Sie es mit einer einzigen Änderung getan haben.
string url = "https://www.google.com";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//a"))
{
outputLabel.Text += node.InnerHtml;
}
Hat die Ausgabe wie erwartet erhalten. Das Problem besteht darin, dass Sie DocumentElement vom HtmlDocument- Objekt fordern , das eigentlich DocumentNode sein sollte . Hier ist eine Antwort von einem Entwickler von HTMLAgilityPack auf das Problem, dem Sie gegenüberstehen.
Schau dir an, was du eigentlich tust: http://htmlagilitypack.codeplex.com/SourceControl/latest#Release/1_4_0/HtmlAgilityPack/HtmlNode.cs .
Sie bitten das oberste Element, Knoten auszuwählen, die mit einem xpath übereinstimmen. Sofern Ihr xpath-Ausdruck nicht mit einem //
beginnt, fragen Sie nach relativen Knoten, bei denen es sich um untergeordnete Knoten handelt. Ein Dokumentelement ist kein Nachkomme von sich selbst, da kein Element ein Nachkomme von sich selbst ist.