2010-10-13 65 views
5

嘿,我想用YQL刮從我的博客的一些數據:如何使用多個XPath選擇在YQL查詢

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

我如何使用XPath的不同位在我的查詢?例如。我可以這樣做:

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

假設我想獲得帖子和標題?我想我可以採用所有的HTML,但我寧願只採取我所需要的,因爲速度是這裏的一個問題。

一旦我有HTML我想從標記中提取文本,是否可以使用PHP正則表達式呢?

我也明白你可以使用CSS語法,如果你有使用YQL的經驗,並可以指導我如何寫一個類似的查詢,但在CSS而不是XPATH中,我將不勝感激!

謝謝。

回答

11

關於CSS:

見YQL網站本身這一點。搜索谷歌的YQL和CSS(我只能在這裏發佈一個鏈接,第二個更有用。)

他們在那裏的例子實際上已經不再有效,但你可以嘗試這個例子,從stackoverflow的首頁。

YQL example

一個XPATH多重選擇:

你可以用XPath語法直接做到這一點。例如

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

謝謝,不清楚語法,但是這已經清除了。 – 2010-10-28 03:23:42

+0

非常非常有用!謝謝。 – talkingnews 2010-11-17 20:41:25

+0

Upvoted ..我自己想出了這個,但想知道我是否可以在兩個xPath的結果之間給出空間或東西,以便稍後我可以解析結果並獲得兩個不同的值。 – SoulMan 2013-07-12 10:58:24

-3

這是不可能的。你需要執行這個查詢兩次。第一次用於第一個xpath,第二次用於第二個xpath。當然,您可以編寫自己的open table聲明併爲這類查詢提供支持。

+0

的信息好,謝謝! – 2010-10-14 10:30:43

0

你也可以寫多XPATH選擇像這樣:

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