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, และอื่นๆ อีกมากมาย, ทำให้เป็นเครื่องมือที่หลากหลายในชุดเครื่องมือของโปรแกรมเมอร์