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

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 และข้อกำหนดในการบริการเสมอ

ดูเพิ่มเติม