Java 網路程式設計 -- 網頁下載

Java 網路程式

簡介

IP

URL

UDP

TCP

Telnet

WebServer

網頁下載

網路爬蟲

Proxy

瀏覽器

訊息

相關網站

參考文獻

最新修改

簡體版

English

本文示範如何用 Java 程式下載一個網頁,因此筆者撰寫了一個稱為 UrlDownload 的類別,使用方法為 java <url> <file> ,舉例而言,如果您使用 java http://tw.yahoo.com/ yahoo.htm 指令,就可以將 Yahoo 台灣的首頁下載到 yahoo.htm 這個檔案中。

程式:UrlDownload.java

import java.io.*;
import java.net.*;
import java.util.*;
 
public class UrlDownload
{
    // 主程式: 用法 java <url> <file> <proxy?> <port?>, 範例: java http://tw.yahoo.com/ yahoo.htm
    public static void main(String[] args) throws Exception
    {
        URL url = new URL(args[0]);  // 建立URL物件
        if (args.length == 4)
            setProxy(args[2], args[3]);
        // 開啟串流
        DataInputStream in = new DataInputStream(url.openStream());
        RandomAccessFile out = new RandomAccessFile(args[1], "rw");
        try
        {
            System.out.println("開始下載檔案: " + args[1]);
            byte data;
            // 複製檔案
            while(true)
            {
            data = (byte)in.readByte();
            out.writeByte(data);
            } 
        }
        catch(EOFException e) { }
        System.out.println("檔案下載成功......");
        in.close();   // 關閉串流
        out.close();
    }
 
    public static void setProxy(String pProxy, String pPort) {
        Properties systemSettings = System.getProperties();
        systemSettings.put("proxySet", "true");
        systemSettings.put("proxyHost", pProxy);
        systemSettings.put("proxyPort", pPort);
        System.setProperties(systemSettings);
    }
}

執行結果

一般而言,使用者只要下 java UrlDownload <url> <file> 就能將網址 <url> 上的網頁下載到檔案 <file> 中,但是由於筆者是在金門大學的校內進行的測試,因此必須透過 proxy 才能連接到校外,所以必須使用 java UrlDownload <url> <file> <proxy> <port> 等具有四個參數的語法,才能正確的進行下載。以下是筆者的執行結果。

D:\java>javac UrlDownload.java

D:\java>java UrlDownload http://tw.yahoo.com/ yahoo.htm proxy.internal 3128
開始下載檔案: yahoo.htm
檔案下載成功......
UrlDownload.png

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License