Come selezionare il seguente tag sibling / xml usando xpath

Ho un file HTML (da Newegg) e il loro HTML è organizzato come di seguito. Tutti i dati nella loro tabella delle specifiche sono ‘ desc ‘ mentre i titoli di ogni sezione sono in ‘ nome. ‘Di seguito sono riportati due esempi di dati delle pagine di Newegg.

 Brand Intel   Series Core i5   Cores 4   Socket LGA 1156 

  Brand AMD   Series Phenom II X4   Cores 4   Socket Socket AM3  

Alla fine mi piacerebbe avere una class per una CPU (che è già impostata) che consiste in un tipo di marca, serie, core e socket per memorizzare ciascuno dei dati. Questo è l’unico modo in cui posso pensare di fare questo:

 if(parsedDocument.xpath(tr/td[@class="name"])=='Brand'): CPU.brand = parsedDocument.xpath(tr/td[@class="name"]/nextsibling?).text 

E facendo questo per il resto dei valori. Come potrei realizzare il nextsibling e c’è un modo più semplice per farlo?

Come potrei realizzare il nextsibling e c’è un modo più semplice per farlo?

Puoi usare :

 tr/td[@class='name']/following-sibling::td 

ma preferirei usare direttamente :

 tr[td[@class='name'] ='Brand']/td[@class='desc'] 

Ciò presuppone che :

  1. Il nodo di contesto, rispetto al quale viene valutata l’espressione XPath, è il genitore di tutti gli elementi tr – non mostrato nella domanda.

  2. Ogni elemento tr ha solo un td con attributo di class valutato 'name' e solo un td con attributo di class valutato 'desc' .

Prova l’asse following-sibling ( following-sibling::td ).