2008-11-04 3 views
31

क्या कोई PHP क्लास/लाइब्रेरी है जो मुझे सीएसएस चयनकर्ताओं के साथ एक्सएचटीएमएल दस्तावेज़ से पूछने की अनुमति देगी? मुझे कुछ पृष्ठों को डेटा के लिए स्क्रैप करने की ज़रूरत है जो बहुत आसानी से सुलभ हो अगर मैं किसी भी तरह से सीएसएस चयनकर्ताओं का उपयोग कर सकता हूं (jQuery ने मुझे खराब कर दिया है!)। कोई विचार?PHP सीएसएस चयनकर्ता पुस्तकालय?

उत्तर

40

आगे Googling के बाद (प्रारंभिक परिणाम बहुत उपयोगी नहीं थे), ऐसा लगता है वहाँ वास्तव में इस के लिए एक Zend फ्रेमवर्क पुस्तकालय, कुछ अन्य लोगों के साथ:

+12

+1 phpQuery बिल्कुल अद्भुत है। – Sampson

+2

मैंने आपके द्वारा सूचीबद्ध वस्तुओं में से 3 को आजमाया। अंत में, मेरी पसंद सरल HTML डोम है, पूरी तरह से क्योंकि वे इसका उपयोग बहुत सरल और अच्छी तरह से समझते हैं। phpQuery ने काम पूरा कर लिया, लेकिन मुझे लगा जैसे दस्तावेज और समर्थन की कमी थी। ज़ेंड ने सफलतापूर्वक मेरी क्वेरी को पकड़ लिया और इसे गिन लिया, लेकिन जब यह मान प्राप्त करने के लिए आया, तो यह असफल रहा। फिर, मेरा सुझाव सरल HTML डोम है। – NessDan

+1

हालांकि सरल एचटीएमएल डोम काफी लोकप्रिय है, ए) इसमें पूर्ण चयनकर्ता वाक्यविन्यास का अच्छा कवरेज नहीं है b) यह सक्रिय विकास में * दिखाई नहीं देता है। –

10

XPath एक्सएमएल (और XHTML) नोड्स तक पहुँचने के लिए एक काफी मानक तरीका है, और सीएसएस की तुलना में अधिक सटीक प्रदान करता है।

+0

+1 0 लाने के लिए, लेकिन मुख्य रूप से क्योंकि विकल्प हमेशा अच्छे होते हैं। – eyelidlessness

+0

वाह, मैं इसके लिए डाउनवॉट किया गया था? मुझे थोड़ी दिलचस्पी है क्यों ... – nickf

+0

मुझे ओपी नहीं था! :-) मुझे लगता है कि यह वास्तव में सबसे अच्छा विकल्प होगा क्योंकि एक्सएचटीएमएल एक्सएमएल का सबसेट है। – Wilco

1

दस्तावेज़ पार्सिंग के लिए मैं DOM का उपयोग करता हूं।

$doc = new DOMDocument(); 
$doc->loadHTML($html); 

$elements = $doc->getElementsByTagName("div"); 
foreach ($elements as $e){ 
    if ($e->getAttribute("class")!="someclass") continue; 

    //its a div.classname 
} 

सुनिश्चित नहीं हैं कि अगर डोम आप एक बार में एक दस्तावेज के सभी तत्वों को प्राप्त करने देता है ... आप के लिए हो सकता है: यदि आप टैग नाम पता (इस उदाहरण "div" में) यह काफी आसानी से अपनी समस्या को हल कर सकते हैं एक पेड़ ट्रैवर्सल करो।

+0

यह विधि मैंने परीक्षण की सबसे तेज़ है। विचार करने के लिए एक और है [SmartDOMDocument] (http://beerpla.net/projects/smartdomdocument-a-smarter-php-domdocument-class/) – jaggedsoft

5

लिए jQuery उन सबसे दिलचस्प पीएचपी, जो phpQuery है jQuery के बंदरगाह हो सकता है। पुस्तकालय के लगभग सभी वर्गों को पोर्ट किया गया है। इसके अतिरिक्त इसमें वेबब्रोसर प्लगइन शामिल है, जिसका उपयोग वेब स्क्रैपिंग के लिए पूरी साइट के पथ/प्रक्रियाओं (उदाहरण के लिए लॉग इन करने के बाद उपलब्ध डेटा तक पहुंचने के लिए किया जा सकता है) के लिए किया जा सकता है। यह बस सर्वर पर वेब ब्राउज़र अनुकरण करता है (घटनाओं और कुकीज़ भी)। नवीनतम संस्करणों में एक्सएमएल नामस्थान और CSS3 "|" के लिए प्रयोगात्मक समर्थन है। चयनकर्ता

1

मैंने मूटूल सीएसएस चयनकर्ता इंजन http://selectors.svn.exyks.org/ के आधार पर मेरा लिखा था। (केवल पढ़ने के लिए हां, तो यह है) यह SimpleXML विस्तार क्षमता पर भरोसा करते हैं

6

एक और एक:
http://querypath.org/

+0

मेरे सभी अन्य विकल्पों की तुलना में बेहतर दिखता है - धन्यवाद! –

6

एक महान एक सिम्फोनी 2, CssSelector\Parser­Introduction का एक घटक है। यह सीएसएस चयनकर्ताओं को XPath अभिव्यक्तियों में परिवर्तित करता है। = एक नजर डालें)

Source code

3

मैं PHP Query Lite का उपयोग कर समाप्त हो गया है, यह बहुत आसान है और सभी की आवश्यकता है।

+0

डाउनवॉटेड क्योंकि यह अब मौजूद नहीं है। – Richard

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^