[Java] 获取保存某一个网站的内容详解编程语言

以下代码可用于获取某一个链接的响应结果, 并将响应结果做简单的处理后, 存入文件中。

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.Date; 
import java.util.List; 
import java.util.Map; 
 
import javax.print.attribute.standard.DateTimeAtCompleted; 
 
public class GetResponse { 
    /** 
     * 向指定URL发送GET方法的请求 
     *  
     * @param url 
     *            发送请求的URL 
     * @param param 
     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 
     * @return URL 所代表远程资源的响应结果 
     */ 
    public static String sendGet(String url, String param) { 
        String result = ""; 
        BufferedReader in = null; 
        try { 
            String urlNameString = url + "?" + param; 
            System.out.println("读取响应:" + urlNameString); 
            URL realUrl = new URL(urlNameString); 
            // 打开和URL之间的连接 
            URLConnection connection = realUrl.openConnection(); 
            // 设置通用的请求属性 
            connection.setRequestProperty("accept", "*/*"); 
            connection.setRequestProperty("connection", "Keep-Alive"); 
            connection.setRequestProperty("user-agent", 
                    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36"); 
            // 建立实际的连接 
            connection.connect(); 
            // 获取所有响应头字段 
            Map<String, List<String>> map = connection.getHeaderFields(); 
            // 遍历所有的响应头字段 
            for (String key : map.keySet()) { 
                System.out.println(key + "--->" + map.get(key)); 
            } 
            // 定义 BufferedReader输入流来读取URL的响应 
            in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
            String line; 
            while ((line = in.readLine()) != null) { 
                result += line; 
            } 
        } catch (Exception e) { 
            System.out.println("发送GET请求出现异常!" + e); 
            e.printStackTrace(); 
        } 
        // 使用finally块来关闭输入流 
        finally { 
            try { 
                if (in != null) { 
                    in.close(); 
                } 
            } catch (Exception e2) { 
                e2.printStackTrace(); 
            } 
        } 
        return result; 
    } 
 
    public static void main(String[] args) { 
        Date currenttime = new Date(); 
        String url = "http://xxx.com"; 
        String result = ""; 
        for (int i = 0; i < 10; i++) { 
            if (result.equals("")) { 
                currenttime = new Date(); 
                result = sendGet(url, currenttime.getTime() + ""); 
            } 
        } 
        System.out.println(result); 
        String[] result2 = result.split("="); 
        System.out.println(result2[1]); 
        System.out.println(); 
        try { 
 
            File file = new File("goldprice.txt"); 
 
            // If file doesnt exists, then create it 
            if (!file.exists()) { 
                file.createNewFile(); 
            } 
 
            // true = append file 
            FileWriter fileWritter = new FileWriter(file.getName(), true); 
            BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
            bufferWritter.write(currenttime + result2[2].replace("|", "/t")); 
            bufferWritter.newLine(); 
            bufferWritter.close(); 
 
            System.out.println("Done"); 
 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
}

将上面的代码保存为.java格式。 在command窗口下,运行:javac GetResponse.java, 生成.class文件。

建一个新的文件,将以下内容拷贝保存到文件中,并以.bat为后缀。执行该bat文件后, 执行的状态将会保存到main.log文件中。

java GetResponse > main.log 

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/17005.html

(0)
上一篇 2021年7月19日 19:47
下一篇 2021年7月19日 19:48

相关推荐

发表回复

登录后才能评论