2010-10-13 13 views
5

Ehi, mi piacerebbe raschiare alcuni dati dal mio blog utilizzando YQL:Come utilizzare più selettori XPath in una query YQL

SELECT * FROM html WHERE url="http://site.com/blog" AND xpath="//div[@class='post']" 

Come posso utilizzare diversi pezzi di XPath nella mia domanda? Per esempio. posso fare qualcosa come:

SELECT * FROM html WHERE url="http://site.com/blog" AND xpath="//div[@class='post']" AND xpath ="//div[@class='title']" 

assumendo che voglio ottenere il post e il titolo? Immagino di poter prendere tutto il codice HTML, ma preferisco prendere solo ciò di cui ho bisogno in quanto la velocità è un problema qui.

Una volta ottenuto il codice HTML, desidero estrarre il testo dal markup, è corretto utilizzare espressioni regolari PHP per questo?

Capisco anche che è possibile utilizzare la sintassi CSS, se si dispone di esperienza con questo con YQL e potrebbe guidarmi in come potrei scrivere una query simile a quella sopra ma in CSS piuttosto che XPATH sarei grato!

Grazie.

risposta

11

Per quanto riguarda i CSS:

consultare il sito web YQL se stesso per questo. Cerca google per YQL e CSS (posso solo pubblicare un link qui e il secondo è più utile.)

L'esempio che hanno lì in realtà non funziona più ma puoi provare questo esempio, che raschia le domande dalla pagina iniziale di StackOverflow.

YQL example

seleziona più di uno XPath:

È possibile farlo direttamente con la sintassi XPath. per esempio.

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title']|//head/meta[@name='description']|//head/meta[@name='keywords']" 
+0

Grazie, non ero sicuro della sintassi ma questo è stato risolto. –

+0

Molto, molto utile! Grazie. – talkingnews

+0

Suvviato .. Ho capito da solo ma volevo sapere se posso dare uno spazio o qualcosa tra il risultato di due xPaths, in modo che più tardi potrei analizzare il risultato e ottenere due valori diversi. – SoulMan

-3

Non è possibile. È necessario eseguire questa query due volte. La prima volta per il primo xpath e la seconda volta per il secondo xpath. Naturalmente puoi scrivere la tua dichiarazione open table e fornire supporto per questo tipo di domande.

+0

Ok grazie per le info! –

0

è anche possibile scrivere XPATH multipla Consente di selezionare in questo modo:

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title' or @name='description']"