2013-11-04 2 views
7

ho html si presenta così:Come selezionare il prossimo nodo utilizzando Scrapy

<h1>Text 1</h1> 
<div>Some info</div> 
<h1>Text 2</h1> 
<div>...</div> 

capisco come estrarre utilizzando le informazioni Scrapy da H1:

content.select("//h1[contains(text(),'Text 1')]/text()").extract() 

Ma il mio obiettivo è quello di estrarre contenuti da <div>Some info</div>

Il mio problema è che non ho alcuna informazione specifica su div. Tutto quello che so, che va esattamente dopo <h1>Text 1</h1>. Posso usare i selettori per ottenere l'elemento NEXT nell'albero? Elemento, che si trova sullo stesso livello nell'albero DOM?

Qualcosa di simile:

a = content.select("//h1[contains(text(),'Text 1')]/text()") 
a.next("//div/text()").extract() 
Some info 

risposta

13

Prova questa xpath:

//h1[contains(text(), 'Text 1')]/following-sibling::div[1]/text()