C++:
HTML विश्लेषण
कैसे:
C++ में बिल्ट-इन HTML पार्सिंग क्षमताएं नहीं आतीं। आप अक्सर गूगल का गंबो-पार्सर या कुछ इसी तरह की लाइब्रेरी का उपयोग करेंगे। यहाँ गंबो-पार्सर का उपयोग करते हुए एक त्वरित उदाहरण है:
#include <iostream>
#include <gumbo.h>
void search_for_links(GumboNode* node) {
if (node->type != GUMBO_NODE_ELEMENT) {
return;
}
if (node->v.element.tag == GUMBO_TAG_A) {
GumboAttribute* href = gumbo_get_attribute(&node->v.element.attributes, "href");
if (href) {
std::cout << href->value << std::endl;
}
}
GumboVector* children = &node->v.element.children;
for (unsigned int i = 0; i < children->length; ++i) {
search_for_links(static_cast<GumboNode*>(children->data[i]));
}
}
int main() {
const char* html = "<html><body><a href='https://example.com'>Link</a></body></html>";
GumboOutput* output = gumbo_parse(html);
search_for_links(output->root);
gumbo_destroy_output(&kGumboDefaultOptions, output);
return 0;
}
नमूना आउटपुट:
https://example.com
गहराई से जानकारी
C++ में HTML का पार्सिंग हमेशा से सरल नहीं रहा है। ऐतिहासिक रूप से, प्रोग्रामर्स रेगेक्स या हस्त लिखित पार्सर्स का उपयोग करते थे, जो दोनों ही त्रुटि प्रवण और जटिल होते हैं। आजकल, गंबो-पार्सर जैसी मजबूत लाइब्रेरियां पार्सिंग की जटिलताओं को संभालती हैं, जिससे इसे आसान और अधिक विश्वसनीय बना दिया गया है।
विकल्पों में टिडी, मायएचटीएमएल, या यहां तक कि C++ system
फ़ंक्शन या एम्बेडेड इंटरप्रिटर्स के माध्यम से पायथन के सुपरफेल के साथ C++ का एकीकरण शामिल है।
कार्यान्विति के हिसाब से, ये लाइब्रेरियां HTML को एक डॉक्यूमेंट ऑब्जेक्ट मॉडल (DOM) ट्री में परिवर्तित करती हैं। DOM को ट्रैवर्स करना और मैनिपुलेट करना उपयोगकर्ताओं को डेटा निकालने और उसके साथ काम करने की अनुमति देता है जैसा कि कैसे खंड में दर्शाया गया है।