Agility Pack C # Html (SelectSingleNode)

c# html html-agility-pack parsing

Domanda

Sto cercando di analizzare questo campo, ma non riesco a farlo funzionare. Tentativo attuale:

var name = doc.DocumentNode.SelectSingleNode("//*[@id='my_name']").InnerHtml;


<h1 class="bla" id="my_name">namehere</h1>

Errore: il riferimento all'oggetto non è impostato su un'istanza di un oggetto.

Apprezzo qualsiasi aiuto.

@ John - Posso assicurare che l'HTML sia stato caricato correttamente. Sto cercando di leggere il mio nome di Facebook per scopi di apprendimento. Ecco uno screenshot dal plugin Firebug. La versione che sto usando è 1.4.0.

http://i54.tinypic.com/kn3wo.jpg

Immagino che il problema sia che profile_name è un nodo figlio o qualcosa del genere, è per questo che non riesco a leggerlo?

Risposta popolare

Il motivo per cui il tuo codice non funziona è perché sulla pagina c'è JavaScript che sta scrivendo il <h1 id='profile_name'> , quindi se stai richiedendo la pagina da un User Agent (o tramite AJAX) che non esegue JavaScript quindi non troverai l'elemento.

Sono stato in grado di ottenere il mio nome usando il seguente selettore:

string name = 
    doc.DocumentNode.SelectSingleNode("//a[@id='navAccountName']").InnerText;



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é