使用socket读取html并打印出来

时间:2015-02-11 08:48:16

标签: java sockets

我正在学习Java,我遇到了一个挑战,要建立一个网址提取器。该程序除了扫描给它的页面以查找其中的外部链接之外什么都不做。我知道如何做到这一点,但我在实现套接字类时遇到了一些麻烦。我需要帮助的是我需要创建一个套接字,它将使用端口80连接到html页面。接下来,我需要将该页面的完整html插入到套接字的输入流中,以便我可以使用它来操作以提取链接。

总而言之,我需要澄清以下事项:

  
      
  1. 将页面的html输入到套接字的输入流中。
  2.   
  3. 将输入流打印到控制台上。
  4.   
编辑:对不起,我的不好。输入流的混淆输出流。

3 个答案:

答案 0 :(得分:0)

使用套接字执行此操作时,请尝试使用UrlConnection类。

    URL connection= new URL("http://lums.edu.pk);
    URLConnection yc = connection.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(
                                yc.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) 
        System.out.println(inputLine);
    in.close();

如果您尝试使用套接字,则需要使用该套接字来清除http协议和how you can retrieve data的内容。最后使用socket发送GET请求。查看this问题,看看它是如何运作的。

答案 1 :(得分:-1)

由于您不需要使用套接字,因此使用为您处理HTTP请求的库(在本例中为Java中包含的库)更容易,并且只是为您提供了一个简单的流页面内容:

public class UrlExtractor {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://www.stackoverflow.com/");
        URLConnection conn = url.openConnection();
        InputStream in = conn.getInputStream();

        // read the page content (usually HTML) from in here

        in.close();
    }
}

答案 2 :(得分:-2)

查看this答案以创建OutputStream。使用PrintStream类打印OutputStream。