Html Agility Pack Hilfe

c# html-agility-pack

Frage

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!

Akzeptierte Antwort

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.


Beliebte Antwort

So habe ich es geschafft. Beachten Sie, dass im Haupt- HTML-Agility-Paket-Beispiel in der Foreach-Zeile doc.DocumentElement.SelectNodes ("// a [@href"]) ein Codefehler angegeben ist. Die richtige und getestete ist unten angegeben.

 HtmlWeb hw = new HtmlWeb();

    HtmlDocument doc = hw.Load(@"http://tipscow.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 funktionierte, dachte ich, ich sollte teilen.




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum