Query XPATH, HtmlAgilityPack ed Estrai testo

c# html html-agility-pack xpath

Domanda

Stavo cercando di estrarre i link da una classe chiamata "tim_new". Mi è stata data una soluzione pure.

Qui vengono fornite sia la soluzione, lo snippet che le informazioni necessarie

La suddetta query XPATH era "//a[@class='tim_new'] , la mia domanda è, come ha fatto questa query a distinguere tra la prima riga dello snippet (fornita nel link sopra e la seconda riga dello snippet).

Più specificamente, qual è la traduzione letterale (in inglese) di questa query XPATH.


Inoltre, voglio scrivere alcune righe di codice per estrarre il testo scritto contro NSE:

<div class="FL gL_12 PL10 PT15">BSE: 523395 &nbsp;&nbsp;|&nbsp;&nbsp; NSE: 3MINDIA &nbsp;&nbsp;|&nbsp;&nbsp; ISIN: INE470A01017</div>

Apprezzerei l'aiuto nel formare la query di selezione necessaria.

Il mio codice è scritto come:

<div class="FL gL_12 PL10 PT15">BSE: 523395 &nbsp;&nbsp;|&nbsp;&nbsp; NSE: 3MINDIA &nbsp;&nbsp;|&nbsp;&nbsp; ISIN: INE470A01017</div>

Ma questo non sembra giusto. Gradirei un aiuto.

Risposta popolare

L'XPath nella prima selezione legge "seleziona tutti gli elementi del documento che hanno un attributo chiamato class con un valore di tim_new". Le cose tra parentesi non sono ciò che stai restituendo, sono i criteri che stai applicando alla ricerca.

Non ho il pacchetto HTML Agility, ma se stai cercando di interrogare i div che hanno "NSE:" come testo, il tuo XPath per la seconda query dovrebbe essere solo "// div", quindi dovrai filtrare usando LINQ.

Qualcosa di simile a

var nodes = 
    doc.DocumentNode.SelectNodes("//div[text()]").Where(a => a.InnerText.IndexOf("NSE:") > -1);

Quindi, in inglese, "Restituisci tutti gli elementi div che contengono immediatamente testo a LINQ, quindi verifica che il valore del testo interno contenga NSE:". Ancora una volta, non sono sicuro che la sintassi sia perfetta, ma questa è l'idea.

L'XPath "// div [@NSE:]" restituirebbe tutti i div che hanno e attribuiscono il nome, NSE :, che sarebbe comunque illegale perché ":" non è permesso in un nome di attributo. Stai cercando il testo dell'elemento, non uno dei suoi attributi.

Spero possa aiutare.'

Nota: se hai div nidificati che contengono entrambi testo come in <div>NSE: some text<div>NSE: more text</div></div> otterrai risultati duplicati.




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é