Analizza la pagina web utilizzando HtmlAgilityPack e Json

c# html-agility-pack json web-scraping

Domanda

Sto cercando di analizzare l'HTML dagli Hotpad e sono confuso su come estrarre il tag script e mapparne una parte in un oggetto Json. Utilizzando HTMLAgilityPack ho caricato un URL di esempio e si interrompe dove cerca quel tag. Ho in programma di deserializzare dopo

Metodo 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();
    }

Tag script:

<script>
 window.__PRELOADED_STATE__ = {{SOME JSON HERE}}
<script>

Modello:

public class Contact
{
    public string DATA_MODEL { get; set; }
    public string companyName { get; set; }
    public string contactName { get; set; }
    public string contactPhone { get; set; }
}

Risposta popolare

Penso che tu abbia appena dimenticato di sostituire il tag 'a' con il tag 'script' nella tua espressione xpath. Al momento non riesco a verificare nel codice, ma puoi utilizzare gli strumenti di chrome dev per testarli attendendoli e utilizzandoli nella finestra di ricerca.

L'ho modificato per avere il tag script e ha funzionato per me usando gli strumenti di chrome dev. Questo è il percorso x che ho provato sulla pagina:

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


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché