保存页面网站

时间:2012-11-19 12:37:40

标签: java

帮助做出这样的事情,我们有一个文本文件,有很多链接到不同的网站(每个链接rasolozhena一个新的行,它们都是以http://test.com的形式写的),你需要在Java程序上进行所有链接并将这些站点的页面保存在文件夹C://中以html格式进行测试,并且这些页面的名称与标记中的名称相同

3 个答案:

答案 0 :(得分:1)

这是用于从txt文件中读取URL并在另一个文件中写入的代码,如您在问题中所述。

public static void main(String[] args) {
    BufferedReader reader = null;
    try {
        reader = new BufferedReader(new FileReader(new File("urlList.txt")));
        String url = reader.readLine();
        int i = 0;
        while (url != null) {
            try {
                getContent(url, i);
            } catch (IOException io) {
                System.out.println(io);
            }
            i++;
            url = reader.readLine();
        }

    } catch (IOException io) {
        System.out.println(io);
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
                // nothing
            }
        }
    }
}

private static void getContent(String url, int index)
        throws MalformedURLException, IOException {
    URL pageUrl;
    URLConnection conn = null;

    pageUrl = new URL(url);
    conn = pageUrl.openConnection();

    conn.connect();

    InputStreamReader in = new InputStreamReader(conn.getInputStream());
    BufferedReader reader = new BufferedReader(in);
    String htmlFileName = "file_content_" + index + ".txt";
    FileWriter fWriter = new FileWriter(htmlFileName);
    BufferedWriter bWriter = new BufferedWriter(fWriter);
    String urlData = null;
    while ((urlData = reader.readLine()) != null) {
        bWriter.write(urlData);
        bWriter.newLine();
    }
    bWriter.close();
}

答案 1 :(得分:0)

public class URLReader
{
      public static void main(String[] args)
      {
           try
                  {
                    URL pageUrl;
                    URLConnection conn = null;

                    pageUrl = new URL("https://www.google.ru/");
                    conn = pageUrl.openConnection();

                    conn.connect();

                    InputStreamReader in = new InputStreamReader(conn.getInputStream());
                    BufferedReader reader = new BufferedReader(in);
                    String htmlFileName = "C:\\hello.html";
                    FileWriter fWriter = new FileWriter(htmlFileName);
                    BufferedWriter bWriter = new BufferedWriter(fWriter);
                    String urlData = null;
                    while ((urlData = reader.readLine()) != null)
                    {
                          bWriter.write(urlData);
                          bWriter.newLine();
                    }
                    bWriter.close();
              }
              catch(IOException io)
              {
                   System.out.println(io);
              }
      }
} 

@Victor这是一个开始,你可以改进代码,一切都如我在问题中描述的那样?请

答案 2 :(得分:0)

前段时间我问了类似的问题:Reading website's contents into string

您可以将其复制到某些FileOutputStream,而不是将其读入字符串。 在Apache Commons IOUtils中有一个很好的功能:

copy(InputStream input, OutputStream output) 
Copy bytes from an InputStream to an OutputStream.

http://commons.apache.org/io/api-release/org/apache/commons/io/IOUtils.html

如果您还要在网页上下载图片和其他文件,最好使用某些图书馆。

当然,如果你正在学习,你可以自己实现。正则表达式可用于查找HTML文件中图像的链接。