Utilisation de HTMLAgility Pack pour extraire des liens

c# html-agility-pack

Question

Considérez ce morceau de code le plus simple:

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;

namespace WebScraper
{
    class Program
    {
        static void Main(string[] args)
        {
            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml("http://www.google.com");

            foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
            {
            }
        }
    }
}

Cela ne fait rien du tout et est copié / inspiré de diverses autres questions StackOverflow comme celle-ci . Lors de la compilation, il y a une erreur d'exécution qui dit "Référence d'objet non définie pour une instance d'objet". mettant en évidence la ligne foreach.

Je ne comprends pas pourquoi l'environnement est devenu irritable pour ce code humble, innocent et inutile.

J'aimerais également savoir si HTMLAgilityPack accepte les classes HTML en tant que nœuds?

Réponse acceptée

Si vous voulez charger du HTML à partir du Web, vous devez utiliser l'objet HtmlWeb :

HtmlWeb web = new HtmlWeb();
HtmlDocument doc =web.Load(url);

Réponse populaire

LoadHtml prend une chaîne de code HTML réel en tant qu'argument. Vous pouvez également passer Charger un flux à partir de WebResponse.GetResponseStream() .

WebRequest req = WebRequest.Create( "http://www.google.com" );
Stream s = req.GetResponse().GetResponseStream();
doc.Load(s);



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi