XPath Expression non funziona in HtmlAgilityPack

c# html-agility-pack xpath

Domanda

So che potrebbe essere il mio noobness in XPath, ma lascia che ti chieda di assicurarmi, perchè sono abbastanza su Google.

Ho un sito Web e voglio ottenere le notizie da esso: www.farsnews.com (è persiano)

Usando le estensioni FireBug e FireXpath sotto firefox e manualmente estrao e collaudo più espressioni Xpath che corrispondono alle intestazioni, come ad esempio:

* html/body/div[2]/div[2]/div[2]/div[*]/div[2]/a/div[2]
* .//*[@class="topnewsinfotitle "]
* .//div[@class="topnewsinfotitle "]

Ho anche provato questi con l'estensione XPather e sembrano funzionare abbastanza bene, ma quando li provo ... il SelectNodes restituisce null!

Qualche indizio o suggerimento?

ecco una porzione del codice:

* html/body/div[2]/div[2]/div[2]/div[*]/div[2]/a/div[2]
* .//*[@class="topnewsinfotitle "]
* .//div[@class="topnewsinfotitle "]

Grazie.

Risposta popolare

Ho testato le tue espressioni. E come menzionato da Dialecticus in un commento, hai uno spazio finale che non dovrebbe esserci.

//div[@class='topnewsinfotitle ']/text()

Restituisce 'sequenza vuota', vedi valutazione: http://xmltools.dk/EQA-ACA6

//div[@class='topnewsinfotitle ']/text()

Restituisce un elenco dei titoli, vedi: http://xmltools.dk/EgA2APAj

Tuttavia, se ci potrebbero essere altre classi usate questo ( http://xmltools.dk/EwA8AJAW ):

//div[@class='topnewsinfotitle ']/text()

(Vedo che si tratta di un problema di codifica nei collegamenti che ho fornito, tuttavia, non dovrebbe essere importante per il significato e per tutte le espressioni XPath, è possibile rimuovere /text() per ottenere i nodi anziché solo il testo)

MA, se possiedi questo sito, dovresti fornire i titoli con un XML (forse RSS o ATOM) o JSON che avranno prestazioni migliori e, cosa più importante, saranno più a prova di proiettile.




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é