2010-10-13 10 views
5

Hey, me gustaría para raspar algunos datos de mi blog a través de YQL:Cómo utilizar varios selectores XPath en una consulta YQL

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

¿Cómo puedo usar diferentes bits de XPath en mi consulta? P.ej. puedo hacer algo como:

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

asumiendo Deseo recibir el post y el título? Creo que podría tomar todo el HTML, pero preferiría tomar lo que necesito ya que la velocidad es un problema aquí.

Una vez que tengo el HTML Quiero extraer el texto del marcado, ¿está bien usar expresiones regulares de PHP para esto?

También entiendo que puede usar la sintaxis CSS, si tiene experiencia en usar esto con YQL y podría guiarme en cómo podría escribir una consulta similar a la anterior pero en CSS en lugar de XPATH ¡Le estaría muy agradecido!

Gracias.

Respuesta

11

En cuanto a CSS:

Ver el sitio web en sí YQL para esto. Buscar google para YQL y CSS (solo puedo publicar un enlace aquí y el segundo es más útil.)

El ejemplo que tienen allí en realidad ya no funciona, pero pueden probar este ejemplo, que raspa las preguntas desde la página principal de stackoverflow.

YQL example

Selecciona múltiples con un XPATH:

Puede hacerlo directamente con la sintaxis XPath. p.ej.

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

Gracias, no estaba seguro acerca de la sintaxis, pero eso lo ha aclarado. –

+0

¡Muy, muy útil! Gracias. – talkingnews

+0

Upvoted ... Me di cuenta de esto pero quería saber si puedo dar un espacio o algo entre el resultado de dos xPaths, para que luego pueda analizar el resultado y obtener dos valores diferentes. – SoulMan

-3

No es posible. Necesita ejecutar esta consulta dos veces. La primera vez para el primer xpath y la segunda vez para el segundo xpath. Por supuesto, puede escribir su propia declaración open table y brindar soporte para este tipo de consultas.

+0

Ok gracias por la información! –

0

También puede escribir XPATH múltiple Selecciona la siguiente manera:

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