PHP:
การดาวน์โหลดหน้าเว็บ
วิธีการ:
PHP ทำให้การดาวน์โหลดเว็บเพจเป็นเรื่องง่ายดาย นี่คือตัวอย่างง่ายๆ โดยการใช้ file_get_contents()
:
<?php
$url = "http://example.com";
$pageContent = file_get_contents($url);
if ($pageContent !== false) {
echo "ดาวน์โหลดหน้าเว็บเรียบร้อยแล้ว.\n";
// ทำอะไรกับ $pageContent
} else {
echo "ล้มเหลวในการดาวน์โหลดหน้าเว็บ.\n";
}
?>
และหากคุณต้องการความสามารถเพิ่มเติมหรือต้องการจัดการกับส่วนหัว HTTP, คุกกี้, หรือคำขอ POST, คุณสามารถใช้งาน cURL
ได้อย่างครบถ้วน:
<?php
$url = "http://example.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$pageContent = curl_exec($ch);
if (curl_errno($ch)) {
echo "Error: " . curl_error($ch) . "\n";
} else {
echo "ดาวน์โหลดหน้าเว็บเรียบร้อยแล้ว.\n";
// ทำอะไรกับ $pageContent
}
curl_close($ch);
?>
ตัวอย่างเอาต์พุตที่ได้คือ:
ดาวน์โหลดหน้าเว็บเรียบร้อยแล้ว.
ถอดรหัส
การดาวน์โหลดเว็บเพจเป็นปฏิบัติการที่มีมาตั้งแต่เว็บไซต์ถือกำเนิด ในตอนแรก คุณจะใช้เครื่องมือบรรทัดคำสั่งเช่น wget
หรือ curl
เพื่อปฏิสัมพันธ์กับเว็บเพจ อย่างไรก็ดี เมื่อ PHP พัฒนาขึ้น ฟังก์ชันต่างๆ เริ่มทำให้การทำงานเหล่านี้สามารถทำได้ภายในสคริปต์
มาเปรียบเทียบกัน:
file_get_contents()
: เหมาะสำหรับงานที่เรียบง่าย แต่ขาดคุณสมบัติขั้นสูง ดีสำหรับการดึงข้อมูลอย่างรวดเร็วโดยไม่มีปัญหาcURL
: เครื่องมือจัดการคำขอเว็บใน PHP ที่ครบเครื่อง เหมาะสำหรับสถานการณ์ซับซ้อน เช่น การตรวจสอบสิทธิ์, การจัดการคุกกี้, และการตั้งค่าส่วนหัว อาจมีขนาดใหญ่กว่าเล็กน้อย แต่มีตอนที่คุณต้องการความสามารถเพิ่มเติมนั้น
เบื้องหลังฉาก, file_get_contents()
ส่งคำขอ GET มาตรฐาน นั่นหมายความว่ามันทำงานเหมือนกับเว็บเบราว์เซอร์เมื่อคุณพิมพ์ URL แต่โดยไม่มีบริบท HTTP (เช่น ส่วนหัว) บางหน้าอาจจะไม่คืนค่าเนื้อหาที่ถูกต้อง
อีกด้านหนึ่ง, cURL
สามารถจำลองพฤติกรรมเบราว์เซอร์ได้อย่างแม่นยำ นั่นจำเป็นสำหรับหน้าที่คาดหวังส่วนหัวหรือคุกกี้ที่เฉพาะเจาะจง
จำไว้ว่า บางเว็บไซต์อาจไม่ชอบถูกขูดข้อมูล ควรเคารพ robots.txt
และข้อกำหนดในการบริการเสมอ