java简单网页抓取的实现方法
本文实例讲述了java简单网页抓取的实现方法。分享给大家供大家参考。具体分析如下:
背景介绍
一tcp简介
1tcp实现网络中点对点的传输
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时代码还未连接远程,只是为连接远程做准备
综上所述,最终代码如下:
importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStreamReader; importjava.net.HttpURLConnection; importjava.net.MalformedURLException; importjava.net.URL; importjava.net.URLConnection;
publicclassSimpleNetSpider{
publicstaticvoidmain(String[]args){
try{ URLu=newURL("http://docs.oracle.com/javase/tutorial/networking/urls/"); URLConnectionconnection=u.openConnection(); HttpURLConnectionhtCon=(HttpURLConnection)connection; intcode=htCon.getResponseCode(); if(code==HttpURLConnection.HTTP_OK) { System.out.println("findthewebsite"); BufferedReaderin=newBufferedReader(newInputStreamReader(htCon.getInputStream())); StringinputLine; while((inputLine=in.readLine())!=null) System.out.println(inputLine); in.close(); } else { System.out.println("Cannotaccessthewebsite"); } } catch(MalformedURLExceptione) { System.out.println("WrongURL"); } catch(IOExceptione) { System.out.println("Cannotconnect"); } } }