PHP में HTML पार्सिंग: वेब स्क्रैपिंग के लिए DOMDocument, SimpleXML और cURL

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में HTML पार्सिंग: वेब पेजों से डेटा निकालने की पूरी गाइड



HTML पार्सिंग वेब डेवलपमेंट के प्रमुख कार्यों में से एक है, जो वेब पेजों से स्वचालित रूप से संरचित डेटा निकालने की अनुमति देता है। PHP इस उद्देश्य के लिए शक्तिशाली अंतर्निहित टूल प्रदान करता है, जिसमें DOMDocument और SimpleXML एक्सटेंशन, साथ ही HTTP अनुरोधों के लिए cURL लाइब्रेरी शामिल है। इस लेख में, हम विस्तार से जानेंगे कि PHP में HTML को कैसे पार्स करें, सर्वोत्तम प्रथाओं, त्रुटि प्रबंधन और कोड उदाहरणों पर चर्चा करेंगे।



PHP में HTML पार्सिंग के मुख्य उपकरण



PHP में HTML पार्सिंग के लिए निम्नलिखित मुख्य घटकों का उपयोग किया जाता है:



  • DOMDocument — HTML/XML के DOM ट्री के साथ काम करने के लिए अंतर्निहित क्लास। यह तत्वों को लोड करने, संशोधित करने और निकालने की अनुमति देता है।
  • DOMXPath — DOMDocument के लिए एक्सटेंशन, जो नोड्स की सटीक खोज के लिए XPath क्वेरी निष्पादित करने की अनुमति देता है।
  • SimpleXML — XML के साथ काम करने के लिए सरलीकृत एक्सटेंशन, लेकिन सही संरचना होने पर HTML के लिए भी उपयोग किया जा सकता है।
  • cURL — HTTP अनुरोध करने के लिए लाइब्रेरी, जो दूरस्थ पेजों का HTML कोड प्राप्त करने के लिए आवश्यक है।


DOMDocument का उपयोग करके HTML पार्सिंग का चरण-दर-चरण उदाहरण



HTML पेज को पार्स करने का एक पूरा उदाहरण देखें। मान लीजिए, हमें किसी वेबसाइट से लेखों के शीर्षक (<h2> टैग) और लिंक (<a>) निकालने हैं।



<?php// 1. cURL का उपयोग करके पेज का HTML कोड प्राप्त करें$url = 'https://example.com/articles';$ch = curl_init($url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');$html = curl_exec($ch);if (curl_errno($ch)) {    die('cURL त्रुटि: ' . curl_error($ch));}curl_close($ch);

// 2. DOMDocument ऑब्जेक्ट बनाएं और HTML लोड करें$dom = new DOMDocument();libxml_use_internal_errors(true); // अमान्य HTML पार्सिंग त्रुटियों को दबाएं$dom->loadHTML($html);libxml_clear_errors();

// 3. आसान खोज के लिए DOMXPath ऑब्जेक्ट बनाएं$xpath = new DOMXPath($dom);

// 4. सभी h2 शीर्षक निकालें$headings = $xpath->query('//h2');echo "<h3>लेखों के शीर्षक:</h3>";foreach ($headings as $heading) { echo "<p>" . htmlspecialchars($heading->nodeValue) . "</p>";}

// 5. 'article-link' क्लास वाले सभी लिंक निकालें$links = $xpath->query('//a[@class="article-link"]');echo "<h3>लेखों के लिंक:</h3>";foreach ($links as $link) { $href = $link->getAttribute('href'); $text = $link->nodeValue; echo "<p><a href='" . htmlspecialchars($href) . "'>" . htmlspecialchars($text) . "</a></p>";}?>


सरल मामलों के लिए SimpleXML का उपयोग



SimpleXML अच्छी तरह से संरचित HTML दस्तावेज़ों को पार्स करने के लिए सुविधाजनक है, लेकिन अमान्य HTML को संभाल नहीं सकता। तालिका से डेटा निकालने का उदाहरण:



<?php$html = '<table><tr><td>सेल 1</td><td>सेल 2</td></tr></table>';$xml = simplexml_load_string($html);if ($xml === false) {    echo "HTML लोड करने में त्रुटि";} else {    foreach ($xml->tr->td as $cell) {        echo "डेटा: " . htmlspecialchars($cell) . "<br>";    }}?>


त्रुटि प्रबंधन और सर्वोत्तम प्रथाएँ



PHP में HTML पार्स करते समय निम्नलिखित बिंदुओं पर ध्यान देना महत्वपूर्ण है:



  • त्रुटियों को दबाना: अमान्य मार्कअप के बारे में चेतावनियों से बचने के लिए HTML लोड करने से पहले libxml_use_internal_errors(true) का उपयोग करें।
  • एन्कोडिंग: सुनिश्चित करें कि HTML सही एन्कोडिंग (UTF-8) में लोड हो। आवश्यकता होने पर mb_convert_encoding() का उपयोग करें।
  • User-Agent: हमेशा

अनुशंसाएँ