C++:
HTML পার্স করা

কিভাবে:

C++ নিজে থেকে HTML পার্সিং সুবিধা সহ আসে না। আপনি সাধারণত Google এর Gumbo-parser বা অনুরূপ কোনো লাইব্রেরি ব্যবহার করবেন। এখানে Gumbo-parser ব্যবহার করে একটি দ্রুত উদাহরণ দেওয়া হল:

#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 পার্স করা সবসময় সরল পথ ছিল না। ঐতিহাসিকভাবে, প্রোগ্রামাররা রেগেক্স বা হাতে লেখা পার্সার ব্যবহার করতো, উভয়ই ত্রুটিপূর্ণ এবং জটিল ছিল। বর্তমান সময়ে, Gumbo-parser এর মতো দৃঢ় লাইব্রেরিগুলি পার্সিংয়ের জটিলতাগুলি সামলান, এটি সহজ এবং আরও বিশ্বস্ত করে তোলে।

বিকল্পগুলি হিসাবে Tidy, MyHTML অথবা C++ কে Python এর BeautifulSoup এর সাথে C++ system ফাংশন বা এম্বেডেড ইন্টারপ্রিটার ব্যবহার করে ইন্টিগ্রেট করা রয়েছে।

বাস্তবায়নের দিক থেকে, এই লাইব্রেরিগুলি HTML কে একটি ডকুমেন্ট অবজেক্ট মডেল (DOM) গাছে রূপান্তর করে। DOM ট্রাভার্স এবং ম্যানিপুলেশন ব্যবহারকারীদের ডেটা নিষ্কাশন এবং কাজ করার জন্য দেখায়, যেমনটি কিভাবে বিভাগে দেখানো হয়েছে।

আরও দেখুন