การดาวน์โหลดหน้าเว็บ

C:
การดาวน์โหลดหน้าเว็บ

วิธีการ:

เพื่อดาวน์โหลดเว็บเพจในภาษา C, หนึ่งในวิธีที่นิยมคือการใช้ไลบรารี libcurl, ไลบรารีการโอนข้อมูล URL ฝั่งไคลเอนต์ที่มีประสิทธิภาพและสามารถพกพาได้ ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งและลิงก์ libcurl ไว้ในโปรเจกต์ของคุณ นี่คือตัวอย่างที่แสดงวิธีการใช้ libcurl เพื่อดาวน์โหลดเนื้อหาของเว็บเพจ:

#include <stdio.h>
#include <curl/curl.h>

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
    size_t written = fwrite(ptr, size, nmemb, stream);
    return written;
}

int main(void) {
    CURL *curl;
    FILE *fp;
    CURLcode res;
    char *url = "http://example.com";
    char outfilename[FILENAME_MAX] = "./downloaded_page.html";

    curl = curl_easy_init(); // เริ่มต้นเซสชัน libcurl แบบง่าย
    if (curl) {
        fp = fopen(outfilename,"wb");
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); // กลับบังเมื่อมีการเขียนข้อมูลที่ได้รับ
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // ตั้งค่าตัวชี้ของไฟล์เพื่อเขียนข้อมูลไปยัง

        res = curl_easy_perform(curl); // ดำเนินการดาวน์โหลดไฟล์
        if(res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
        }

        /* ทำความสะอาดเสมอ */
        curl_easy_cleanup(curl); // ทำความสะอาดเซสชันง่ายๆ
        fclose(fp); // ปิดสตรีมของไฟล์
    }
    return 0;
}

ผลลัพธ์ตัวอย่าง (ไม่มีผลลัพธ์ที่มองเห็นได้ในคอนโซล): โค้ดนี้ดาวน์โหลดเนื้อหาที่ URL ที่ระบุและบันทึกไว้ในไฟล์ชื่อ downloaded_page.html ตรวจสอบไดเรกทอรี่ของโปรแกรมของคุณสำหรับไฟล์นี้เพื่อดูเนื้อหาที่ดาวน์โหลด

ลงลึก:

ในอดีต, การดาวน์โหลดเนื้อหาเว็บในภาษา C เป็นสิ่งที่ยุ่งยากมากขึ้น, ต้องใช้การเขียนโปรแกรมซ็อกเก็ตและการจัดการโปรโตคอล HTTP ด้วยตัวเอง Libcurl ทำให้ความซับซ้อนเหล่านี้เรียบง่าย, นำเสนอ API ระดับสูงที่แข็งแกร่งและมีประสิทธิภาพสูงสำหรับการโอนข้อมูลทางเว็บ

ในขณะที่ libcurl ทำให้การร้องขอ HTTP ในภาษา C ง่ายขึ้น, ภาษาการเขียนโปรแกรมสมัยใหม่เช่น Python กับไลบรารี requests ของมันหรือ JavaScript (Node.js) ด้วยไลบรารีไคลเอนต์ HTTP หลายประเภทอาจนำเสนอไวยากรณ์ที่เข้าใจง่ายกว่าและการสนับสนุนอย่างในตัวสำหรับ JSON และรูปแบบข้อมูลอื่นๆ ที่ใช้กันอย่างแพร่หลายในการสื่อสารเว็บ อย่างไรก็ตาม, C และ libcurl ให้โซลูชันที่มีประสิทธิภาพสูงและมั่นคงสำหรับระบบที่ประสิทธิภาพ, การควบคุมที่ละเอียด, หรือการรวมเข้ากับโค้ดเบส C ที่มีอยู่เป็นสิ่งสำคัญ นอกจากนี้ยังควรทราบว่า C ร่วมกับ libcurl สามารถใช้ได้มากกว่าการดาวน์โหลดเว็บเพจ - มันสามารถทำงานกับ FTP, SMTP, และอื่นๆ อีกมากมาย, ทำให้เป็นเครื่องมือที่หลากหลายในชุดเครื่องมือของโปรแกรมเมอร์