JavaScript:
การดาวน์โหลดหน้าเว็บ
วิธีการ:
นี่คือวิธีง่ายๆในการดาวน์โหลดหน้าเว็บโดยใช้ Node.js กับ node-fetch
:
const fetch = require('node-fetch'); // คุณอาจจำเป็นต้องติดตั้งสิ่งนี้ก่อน!
async function downloadPage(url) {
try {
const response = await fetch(url);
const body = await response.text();
console.log(body); // แสดงผล HTML ของหน้าเพจ
} catch (error) {
console.error(error);
}
}
downloadPage('https://example.com');
ตัวอย่างผลลัพธ์:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
...
</html>
ศึกษาลึก
ในอดีต, การดาวน์โหลดหน้าเว็บทำได้โดยใช้ XMLHTTPRequest ในเบราว์เซอร์หรือโมดูล http
ใน Node.js อย่างไรก็ตาม, หลังจาก ES6, fetch
API กลายเป็นมาตรฐานสมัยใหม่เนื่องจากมีไวยากรณ์ที่ง่ายกว่าและมีธรรมชาติที่พื้นฐานเป็นพรอมิส
ทางเลือกอื่น ๆ ได้แก่ axios
, แพ็กเกจ npm ที่ได้รับความนิยม ซึ่งจัดการคำขอด้วยฟังก์ชันที่มากกว่า fetch ดั้งเดิม เพื่อกรณีการใช้งานที่ซับซ้อน, คุณอาจใช้ puppeteer
เพื่อจัดการแสดงหน้าเว็บในเบราว์เซอร์ที่ไม่มีหัว, ซึ่งมีประโยชน์สำหรับการจัดการกับเนื้อหาที่แสดงผลโดย JavaScript
เมื่อดำเนินการดาวน์โหลดหน้าเว็บ, จำเป็นที่จะต้องให้ความสนใจกับประเด็นเช่น การเคารพ robots.txt
, การจัดการ User-Agent
เพื่อหลีกเลี่ยงการถูกบล็อก, และการจัดการการประมวลผลอย่างไม่ต่อเนื่องอย่างระมัดระวังเพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นกับการโหลดเซิร์ฟเวอร์หรือสถานการณ์การแข่งขัน
ดูเพิ่มเติม
- คู่มือ MDN Web Docs สำหรับ
fetch
API: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch - หน้า GitHub ของ Axios: https://github.com/axios/axios
- หน้า GitHub ของ Puppeteer: https://github.com/puppeteer/puppeteer
- บทความเกี่ยวกับหลักการดีที่สุดในการเว็บสกรีป: https://www.scrapingbee.com/blog/web-scraping-best-practices/