2010-12-02 12 views
14

संभव डुप्लिकेट:
How to parse and process HTML with PHP?पीएचपी एचटीएमएल डोम पार्सर

मैं PHP के लिए HTML डोम पारसर्स में देख रहा हूँ। मुझे PHP Simple HTML DOM Parser मिला है। क्या कोई अन्य मुझे देख रहा है?

+0

आपको ऐसा क्यों लगता है कि आपको कुछ और चाहिए? यदि यह नौकरी करता है, तो इसका इस्तेमाल करें। :) – casablanca

+0

यह अभी भी एक महान संसाधन गॉर्डन है, +1 – RobertPitt

उत्तर

16

हाँ देख सकते हैं। सरल एचटीएमएल दस्तावेज़ ठीक है, लेकिन निर्मित डोम पार्सर से magnitude slower का ऑर्डर ठीक है।

$dom = new DOMDocument(); 
@$dom->loadHTML($html); 
$x = new DOMXPath($dom); 

foreach($x->query("//a") as $node) 
{ 
    $data['dom']['href'][] = $node->getAttribute("href"); 
} 

इसका उपयोग करें।

+0

'क्वेरी' को नोडलिस्ट के बजाय नोड वापस करने का कोई तरीका है? उदाहरण के लिए, एक पृष्ठ में केवल एक एच 1 टैग होता है। मैं इसे नोडवेल प्राप्त करना चाहता हूं, लेकिन मुझे नहीं लगता कि मुझे एक नोडलिस्ट के माध्यम से पुनरावृत्ति करना होगा। – StackOverflowNewbie

+1

सूची में पहला नोड प्राप्त करने के लिए आपको '$ नोड [0]' का उपयोग करने में सक्षम होना चाहिए। या बस पुनरावृत्त और तोड़ो। मैं बस फिर से टूटना और तोड़ना। अगर क्वेरी कुछ भी नहीं लौटाती है तो मुझे इस तरह की कोई त्रुटि नहीं मिलती है। –

1

हाल ही में मुझे ganon भी मिला, लेकिन सामान्य रूप से PHP Simple HTML DOM Parser सबसे अच्छा है!

+1

PHP सरल HTML डोम पार्सर चुक्स, यदि आप एकाधिक पृष्ठों को क्रॉल करने का प्रयास करते हैं, उदा। स्तर 1: 300 लिंक प्राप्त करें (उदा। सूची से) स्तर 2: प्रत्येक लिंक पर जाएं और विवरण के साथ पृष्ठ पुनर्प्राप्त करें और तत्वों को प्राप्त करें। आपको जो भी मिलता है वह रीसेट त्रुटियों का संग्रह होता है (सर्वर प्रकार के आधार पर) - प्लस यह बहुत धीमा है – Jeffz

+0

गैनन केवल मेरी इच्छाओं के 2 तत्व लोड करता है और जब मेरे कंप्यूटर को लटकाया गया सरल HTML डोम पार्सर चलाने का प्रयास करता है !!! – zhilevan

+0

मुझे डॉन में निर्मित डीओएम के साथ-साथ सरल एचटीएमएल डोम पार्सर से बहुत धीमी गति से गैनन मिला। इसके अलावा, सरल एचटीएमएल डोम भारी मेमोरी रिसाव से ग्रस्त प्रतीत होता है और आपको आवंटित वस्तुओं को मैन्युअल रूप से साफ या पुन: उपयोग करना होगा। – jahackbeth