2010-10-13 7 views
5

Hey verwenden, möchte ich einige Daten aus meinem Blog mit YQL kratzen:Wie mehrere XPath-Selektoren in einer YQL Abfrage

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

Wie kann ich verschiedene Bits von XPath in meiner Abfrage verwenden? Z.B. kann ich etwas tun wie:

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

vorausgesetzt, ich möchte den Beitrag und den Titel bekommen? Ich denke, ich könnte den gesamten HTML-Code aufnehmen, aber ich nehme lieber nur das, was ich brauche, da Geschwindigkeit hier ein Problem darstellt.

Sobald ich den HTML habe ich möchte den Text aus dem Markup extrahieren, ist es in Ordnung, PHP regulären Ausdrücke dafür zu verwenden?

Ich verstehe auch, dass Sie CSS-Syntax verwenden können, wenn Sie Erfahrung damit mit YQL haben und könnte mich in wie ich könnte eine ähnliche Abfrage an die oben, aber in CSS statt XPATH würde ich dankbar sein!

Danke.

Antwort

11

In Bezug auf CSS:

Siehe YQL Website selbst für diese. Suche google nach YQL und CSS (Ich kann hier nur einen Link posten und der zweite ist nützlicher.)

Das Beispiel, das sie dort haben, funktioniert eigentlich nicht mehr, aber Sie können dieses Beispiel ausprobieren, das die Fragen abschabt von der Vorderseite des Stackoverflow.

YQL example

Multiple Selects mit einem XPATH:

Sie können dies mit XPath-Syntax direkt zu tun. z.B.

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

Danke, war nicht sicher über die Syntax, aber das ist klar. –

+0

Sehr, sehr nützlich! Vielen Dank. – talkingnews

+0

Upvoted .. Ich habe das selbst herausgefunden, aber ich wollte wissen, ob ich ein Leerzeichen oder etwas zwischen dem Ergebnis zweier xPaths geben kann, damit ich später das Ergebnis analysieren und zwei verschiedene Werte erhalten kann. – SoulMan

-3

Es ist nicht möglich. Sie müssen diese Abfrage zweimal ausführen. Das erste Mal für den ersten xpath und das zweite Mal für den zweiten xpath. Natürlich können Sie Ihre eigene open table Deklaration schreiben und Unterstützung für diese Art von Abfragen bieten.

+0

Ok danke für die Info! –

0

Sie können auch schreiben Mehrere XPATH wie diese Auswahl:

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