java简单网页抓取的实现方法

 更新时间:2014年12月20日 10:32:38   投稿:shichen2014  
这篇文章主要介绍了java简单网页抓取的实现方法,详细分析了与Java网页抓取相关的tcp及URL相关概念,以及对应的类文件原理,具有一定的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了java简单网页抓取的实现方法。分享给大家供大家参考。具体分析如下:

背景介绍

一 tcp简介

  1 tcp 实现网络中点对点的传输

  2 传输是通过ports和sockets

  ports提供了不同类型的传输(例如 http的port是80)

    1)sockets可以绑定在特定端口上,并且提供传输功能

    2)一个port可以连接多个socket

二 URL简介

URL 是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。

互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

综上,我们要抓取网页的内容实质上就是通过url来抓取网页内容。

Java提供了两种方法:

一种是直接从URL读取网页

一种是通过 URLConnection来读取网页

其中的URLConnection是以http为核心的类,提供了很多关于连接http的函数

本文将给出基于URLConnection的实例代码。

在此之前我们先来看下关于url的异常。不了解java异常机制的请参看上一篇博文。

构造URL的异常MalformedURLException产生条件:url的字符串为空或者是不能辨认的协议

建立 URLConnection的异常 IOException产生条件: openConnection失败,注意openConnection时 代码还未连接远程,只是为连接远程做准备

综上所述,最终代码如下:

复制代码 代码如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class SimpleNetSpider {

    public static void main(String[] args) {

        try{
            URL u = new URL("http://docs.oracle.com/javase/tutorial/networking/urls/");
            URLConnection connection = u.openConnection();
            HttpURLConnection htCon = (HttpURLConnection) connection;
            int code = htCon.getResponseCode();
            if (code == HttpURLConnection.HTTP_OK)
            {
                System.out.println("find the website");
                BufferedReader in=new BufferedReader(new InputStreamReader(htCon.getInputStream()));
                String inputLine;
                while ((inputLine = in.readLine()) != null)
                        System.out.println(inputLine);
                    in.close();
            }
            else
            {
                System.out.println("Can not access the website");
            }
        }
        catch(MalformedURLException e )
        { 
            System.out.println("Wrong URL");
        }
        catch(IOException e)
        {
            System.out.println("Can not connect");
        }
    }
}

希望本文所述对大家的Java程序设计有所帮助。

相关文章

  • java并发编程工具类PriorityBlockingQueue优先级队列

    java并发编程工具类PriorityBlockingQueue优先级队列

    这篇文章主要为大家介绍了java并发编程工具类PriorityBlockingQueue优先级队列的方法示例应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Nacos负载均衡策略总结

    Nacos负载均衡策略总结

    Nacos 作为目前主流的微服务中间件,包含了两个顶级的微服务功能:配置中心和注册中心,本文给大家总结了几种Nacos负载均衡策略,通过图文结合介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 初识MyBatis及基本配置和执行

    初识MyBatis及基本配置和执行

    这篇文章主要介绍了初识MyBatis的基本知识,文中给大家提到了mybatis基本配置和执行过程,需要的朋友可以参考下
    2017-11-11
  • Netty粘包拆包及使用原理详解

    Netty粘包拆包及使用原理详解

    Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序,这篇文章主要介绍了Netty粘包拆包及使用原理
    2022-08-08
  • Spring Retry实现重试机制的示例详解

    Spring Retry实现重试机制的示例详解

    这篇文章主要为大家详细介绍了Spring-Retry的用法以及实现原理是怎么样的,文中的示例代码讲解详细,具有一定的参考价值,需要的可以了解一下
    2023-07-07
  • ConcurrentHashMap是如何保证线程安全

    ConcurrentHashMap是如何保证线程安全

    大家好,本篇文章主要讲的是ConcurrentHashMap是如何保证线程安全,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境的步骤详解

    IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境的步骤详解

    这篇文章主要介绍了IntelliJ IDEA基于SpringBoot如何搭建SSM开发环境,本文分步骤通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • JUC并发编程LinkedBlockingQueue队列深入分析源码

    JUC并发编程LinkedBlockingQueue队列深入分析源码

    LinkedBlockingQueue 是一个可选有界阻塞队列,这篇文章主要为大家详细介绍了Java中LinkedBlockingQueue的实现原理与适用场景,感兴趣的可以了解一下
    2023-04-04
  • java的Arrays工具类实战

    java的Arrays工具类实战

    java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。Arrays作为一个工具类,能很好的操作数组。下面介绍主要使用的几个函数
    2016-12-12
  • java对于目录下文件的单词查找操作代码实现

    java对于目录下文件的单词查找操作代码实现

    这篇文章主要介绍了java对于目录下文件的单词查找操作代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论