2010-10-13 6 views
5

अरे, मुझे YQL का उपयोग कर अपने ब्लॉग से कुछ स्क्रैप डेटा करना चाहते हैं:कैसे एक YQL क्वेरी में अनेक xpath चयनकर्ताओं का उपयोग करने

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 है, तो मैं मार्कअप से टेक्स्ट निकालना चाहता हूं, क्या यह PHP नियमित अभिव्यक्तियों का उपयोग करना ठीक है?

मैं यह भी समझता हूं कि आप सीएसएस सिंटैक्स का उपयोग कर सकते हैं, यदि आपके पास वाईक्यूएल के साथ इसका उपयोग करने का अनुभव है और मुझे यह पता चल सकता है कि मैं उपर्युक्त के लिए एक समान क्वेरी कैसे लिख सकता हूं लेकिन XPATH के बजाय सीएसएस में मैं आभारी हूं!

धन्यवाद।

उत्तर

11

सीएसएस के बारे में:

इस के लिए YQL वेबसाइट में ही मिलते हैं। YQL और CSS के लिए Google पर खोजें (मैं केवल यहां एक लिंक पोस्ट कर सकता हूं और दूसरा एक और उपयोगी है।)

उनके पास मौजूद उदाहरण वास्तव में काम नहीं कर रहा है लेकिन आप इस उदाहरण को आजमा सकते हैं, जो प्रश्नों को स्क्रैप करता है स्टैक ओवरफ्लो के अग्रभाग से। एक XPATH साथ

YQL example

एकाधिक चयन:

आप xpath वाक्य रचना के साथ सीधे कर सकते हैं। जैसे

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

धन्यवाद, वाक्यविन्यास के बारे में निश्चित नहीं था लेकिन यह इसे साफ़ कर दिया गया है। –

+0

बहुत, बहुत उपयोगी! धन्यवाद। – talkingnews

+0

उपरोक्त .. मैंने इसे स्वयं समझ लिया लेकिन जानना चाहता था कि क्या मैं दो xpaths के परिणाम के बीच कोई स्थान या कुछ दे सकता हूं, ताकि बाद में मैं परिणाम को पार्स कर सकूं और दो अलग-अलग मान प्राप्त कर सकूं। – SoulMan

-3

यह संभव नहीं है। आपको इस क्वेरी को दो बार निष्पादित करने की आवश्यकता है। पहले xpath के लिए पहली बार और दूसरी xpath के लिए दूसरी बार। बेशक आप अपना खुद का open table घोषणा लिख ​​सकते हैं और इस तरह के प्रश्नों के लिए समर्थन प्रदान कर सकते हैं।

+0

ठीक है, धन्यवाद! –

0

तुम भी लिख सकते हैं एकाधिक XPATH इस तरह का चयन करता है: जानकारी के लिए

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title' or @name='description']" 
संबंधित मुद्दे