Parse page Web en utilisant HtmlAgilityPack et Json

c# html-agility-pack json web-scraping

Question

J'essaie d'analyser le code HTML à partir de Hotpads et je ne comprends pas comment extraire la balise de script et en mapper une partie dans un objet Json. En utilisant HTMLAgilityPack, j'ai chargé un exemple d'URL qui se coche à l'endroit où il recherche cette balise. Je prévois de le désérialiser après

Méthode principale

   private static void ParseSite()
    {
        var url = "https://hotpads.com/308-s-9th-dr-ponte-vedra-beach-fl-32082-syw3eh/building";
        var web = new HtmlWeb();
        var doc = web.Load(url);

        var link = doc.DocumentNode.SelectSingleNode("//a[contains(.,'window.__PRELOADED_STATE__')]");

        if (link != null)
        {
            Console.WriteLine(link.InnerText);
        }
        Console.ReadLine();
    }

Balise de script:

   private static void ParseSite()
    {
        var url = "https://hotpads.com/308-s-9th-dr-ponte-vedra-beach-fl-32082-syw3eh/building";
        var web = new HtmlWeb();
        var doc = web.Load(url);

        var link = doc.DocumentNode.SelectSingleNode("//a[contains(.,'window.__PRELOADED_STATE__')]");

        if (link != null)
        {
            Console.WriteLine(link.InnerText);
        }
        Console.ReadLine();
    }

Modèle:

   private static void ParseSite()
    {
        var url = "https://hotpads.com/308-s-9th-dr-ponte-vedra-beach-fl-32082-syw3eh/building";
        var web = new HtmlWeb();
        var doc = web.Load(url);

        var link = doc.DocumentNode.SelectSingleNode("//a[contains(.,'window.__PRELOADED_STATE__')]");

        if (link != null)
        {
            Console.WriteLine(link.InnerText);
        }
        Console.ReadLine();
    }

Réponse populaire

Je pense que vous avez simplement oublié de remplacer la balise 'a' par la balise 'script' dans votre expression xpath. Je ne peux pas vérifier le code pour le moment, mais vous pouvez utiliser les outils de développement de chrome pour les tester en allant dans l’espoir et en l’utilisant dans la fenêtre de recherche.

Je l'ai modifié pour avoir la balise script à la place et cela a fonctionné pour moi en utilisant les outils de développement de chrome. C'est le xpath que j'ai essayé sur la page:

//script[contains(.,'window.__PRELOADED_STATE__')]



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