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 | NSE: 3MINDIA | ISIN: INE470A01017</div>
Apprezzerei l'aiuto nel formare la query di selezione necessaria.
Il mio codice è scritto come:
IEnumerable<string> NSECODE = doc.DocumentNode.SelectSingleNode("//div[@NSE:]");
Ma questo non sembra giusto. Gradirei un aiuto.
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.