PHP में HTML पार्सिंग: लाइब्रेरी और टूल्स का अवलोकन
HTML पार्सिंग वेब डेवलपर के सामान्य कार्यों में से एक है। चाहे वह किसी दूसरी साइट से डेटा निकालना (स्क्रैपिंग) हो, अपने पेजों का विश्लेषण करना हो या टेस्टिंग को स्वचालित करना हो - एक विश्वसनीय टूल के बिना काम नहीं चलता। PHP, एक सर्वर-साइड भाषा के रूप में, HTML कोड के साथ काम करने के कई तरीके प्रदान करती है। इस लेख में, हम तीन सबसे लोकप्रिय लाइब्रेरी: PHP Simple HTML DOM Parser, DiDOM और Symfony DomCrawler पर चर्चा करेंगे। आप उनकी क्षमताओं, ताकत और कमजोरियों के बारे में जानेंगे, साथ ही कोड उदाहरण भी देखेंगे।
HTML पार्सिंग की आवश्यकता क्यों है?
PHP के अंतर्निहित फंक्शन (file_get_contents, preg_match) जटिल कार्यों के लिए बहुत ही सरल हैं। रेगुलर एक्सप्रेशन जल्दी ही बोझिल हो जाते हैं और HTML संरचना में मामूली बदलाव पर टूट जाते हैं। विशेष लाइब्रेरी आपको निम्नलिखित की अनुमति देती हैं:
- CSS-सेलेक्टर या XPath के माध्यम से एलिमेंट्स तक पहुँचना;
- JavaScript की तरह DOM-ट्री को ट्रैवर्स करना;
- टेक्स्ट, एट्रीब्यूट, लिंक निकालना;
- HTML को संशोधित करना और परिणाम सहेजना।
1. PHP Simple HTML DOM Parser
सबसे पुरानी और सबसे प्रसिद्ध लाइब्रेरी में से एक। यह बिना किसी बाहरी निर्भरता के काम करती है, PHP 5.6+ के लिए उपयुक्त है। इसका मुख्य लाभ सहज ज्ञान युक्त सिंटैक्स है, जो jQuery की याद दिलाता है।
स्थापना
// GitHub से simple_html_dom.php फ़ाइल डाउनलोड करेंrequire_once 'simple_html_dom.php';उपयोग का उदाहरण
// URL से DOM ऑब्जेक्ट बनाएँ$html = file_get_html('https://example.com');
// सभी लिंक खोजेंforeach($html->find('a') as $link) { echo $link->href . ' - ' . $link->plaintext . "";}
// h1 शीर्षक निकालें$h1 = $html->find('h1', 0);echo $h1 ? $h1->plaintext : 'शीर्षक नहीं मिला';
// मेमोरी साफ़ करें$html->clear();लाभ और हानियाँ
- + सरलता और स्पष्ट API;
- + Composer की आवश्यकता नहीं;
- - बड़े दस्तावेज़ों के साथ धीमी गति;
- - प्रोजेक्ट लंबे समय से अपडेट नहीं हुआ;
- - PHP 8.x के आधुनिक मानकों का पूरी तरह से समर्थन नहीं करता।
2. DiDOM
एक आधुनिक लाइब्रेरी, जो समुदाय द्वारा सक्रिय रूप से समर्थित है। PHP 7.4–8.3 के साथ पूरी तरह से संगत। CSS-सेलेक्टर और XPath का उपयोग करती है, Simple HTML DOM से कई गुना तेज़ काम करती है।
Composer के माध्यम से स्थापना
composer require imangazaliev/didomउपयोग का उदाहरण
use DiDom\\Document;
$document = new Document('https://example.com', true);
// सभी लिंक खोजें$links = $document->find('a');foreach ($links as $link) { echo $link->attr('href') . "";}
// क्लास द्वारा खोजें$items = $document->find('.product-title');foreach ($items as $item) { echo $item->text() . "";}
// पहला एलिमेंट निकालें$firstTitle = $document->first('h2');echo $firstTitle ? $firstTitle->text() : 'कोई शीर्षक नहीं';लाभ और हानियाँ
- + उच्च प्रदर्शन;
- + किसी भी जटिलता के CSS-सेलेक्टर का समर्थन;
- + एन्कोडिंग के साथ काम करना;
- - Composer की आवश्यकता;
- - हिंदी में दस्तावेज़ीकरण उपलब्ध है, लेकिन खंडित है।
3. Symfony DomCrawler
Symfony इकोसिस्टम का हिस्सा है, लेकिन इसे एक स्वतंत्र लाइब्रेरी के रूप में भी इस्तेमाल किया जा सकता है। DOM में नेविगेशन, डेटा निष्कर्षण और फॉर्म के साथ काम करने के लिए एक शक्तिशाली API प्रदान करता है।
स्थापना
composer require symfony/dom-crawlercomposer require symfony/css-selector // CSS-सेलेक्टर के लिएउपयोग का उदाहरण
use Symfony\\Component\\DomCrawler\\Crawler;
$html = file_get_contents('https://example.com');$crawler = new Crawler($