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

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

วิธีการ:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;

public class WebPageDownloader {
    public static void main(String[] args) {
        String urlStr = "http://example.com";
        try {
            URL url = new URL(urlStr);
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) {
                String line;
                while ((line = reader.readLine()) != null) {
                    System.out.println(line);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ตัวอย่างผลลัพธ์อาจมีลักษณะดังนี้:

<!doctype html>
<html>
<head>
    <title>Example Domain</title>
    ...
</head>
...
</html>

ลงลึก

ในอดีต, การดาวน์โหลดเว็บเพจเป็นเรื่องง่าย—HTTP นั้นเรียบง่าย, เว็บไซต์มีเพียง HTML ส่วนใหญ่เป็นแบบสแตติก วันนี้เว็บไซต์ซับซ้อน—นึกถึง HTTPS, เนื้อหาที่ขับเคลื่อนด้วย JavaScript, และ AJAX เต็มไปหมด

สำหรับเนื้อหาแบบสแตติก, java.net.URL และ java.net.HttpURLConnection เป็นตัวเลือกที่ตรงไปตรงมา—ไม่มีเครื่องเยอะ, แค่ใช้งานได้ แต่ถ้าคุณต้องการเว็บไซต์ที่เต็มไปด้วยเนื้อหาแบบไดนามิกที่โหลดโดย JavaScript, คลาสเหล่านั้นอาจจะไม่พอ, และคุณอาจจะต้องมองหาเครื่องมืออย่าง Selenium หรือ HtmlUnit แทน

อย่าลืม, การเลือกเครื่องมือที่เหมาะสมยังขึ้นอยู่กับว่าคุณต้องการทำอะไรกับเว็บเพจหลังจากที่ดาวน์โหลดมาแล้ว การแยกคำ HTML? Jsoup เป็นเพื่อนของคุณ การดำเนินการ JavaScript? พิจารณาเบราว์เซอร์แบบไม่มีหน้าต่าง คลาส java.net เป็นเพียงจุดเริ่มต้นของธารน้ำแข็ง, แต่มีความเหมาะสมสำหรับงานที่รวดเร็วหรือการขูดข้อมูลจากเว็บเพจธรรมดาๆ

จำนโยบายของความสุภาพ: อย่าทำการร้องขอแบบรวดเร็วต่อเว็บไซต์, หรือคุณจะถูกแบน และตรวจสอบให้แน่ใจว่าคุณปฏิบัติตามแนวทาง robots.txt ของเว็บไซต์อย่างเหมาะสม

ดูเพิ่มเติม

  • ห้องสมุด Jsoup สำหรับการประมวลผลและการสกัด HTML
  • Selenium WebDriver สำหรับงานที่ซับซ้อนขึ้น รวมถึงการดำเนินการ JavaScript
  • คู่มือสำหรับ HttpURLConnection สำหรับผู้ที่ต้องการรายละเอียดลึกล้ำเกี่ยวกับวิธีการจัดการ HTTP ที่ใช้ใน Java
  • HtmlUnit, “เบราว์เซอร์ที่ไม่มี GUI สำหรับโปรแกรม Java”, เหมาะสำหรับหน้าเว็บที่มี JavaScript มาก