【问题标题】:Save pages sites保存页面网站
【发布时间】:2012-11-19 12:37:39
【问题描述】:

帮助做这样的事情,我们有一个文本文件,有很多不同网站的链接(每个链接 rasolozhena 换行,格式为http://test.com),你需要继续Java程序将这些站点的页面全部链接并保存在文件夹C://test中,以html格式,并且这些页面的名称与标签中的名称相同

【问题讨论】:

  • 好吧,或者提供参考资料,它描述了如何做到这一点,但如果你把代码写给我,我将非常感激
  • 那么,谁来分享链接?)

标签: java


【解决方案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();
}

【讨论】:

  • 谢谢,但我感兴趣的问题是程序 bralav 从文件链接并以它们的格式存储所有页面
  • 所以,@EricScot,您需要在问题中指定这一点!
  • 我指出我需要一个文本文件中的所有链接并从中获取信息以保存,您可以给出更详细的答案。初学者不太清楚
  • 尝试了解如何使用 BufferedReader 读取文件。因此,您可以阅读每一行并使用我的代码 sn-p 获取信息。并使用您阅读的类似代码编写。
【解决方案2】:

我前段时间问过类似的问题: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 文件中的图像链接很有用。

【讨论】:

    【解决方案3】:
    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 这是一个开始,你可以改进代码,一切都像我在问题中描述的那样?请

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多