首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Java容易的网络爬虫实现

2012-11-01 
Java简单的网络爬虫实现最近在学习搜索方面的东西,需要了解网络爬虫方面的知识,虽然有很多开源的强大的爬

Java简单的网络爬虫实现
最近在学习搜索方面的东西,需要了解网络爬虫方面的知识,虽然有很多开源的强大的爬虫,但本着学习的态度,自己写了一个简单的网络爬虫,以便了解其中原理。

首先介绍每个类的功能:

DownloadPage.java的功能是下载此超链接的页面源代码.

FunctionUtils.java 的功能是提供不同的静态方法,包括:页面链接正则表达式匹配,获取URL链接的元素,判断是否创建文件,获取页面的Url并将其转换为规范的Url,截取网页网页源文件的目标内容。

HrefOfPage.java 的功能是获取页面源代码的超链接。

UrlDataHanding.java 的功能是整合各个给类,实现url到获取数据到数据处理类。

UrlQueue.java 的未访问Url队列。

VisitedUrlQueue.java 已访问过的URL队列。

下面介绍一下每个类的源代码:

DownloadPage.java 此类要用到HttpClient组件。
 



HrefOfPage.java 此类为获取页面的超链接

  

package com.sreach.spider;   import java.util.HashSet;   /**   * 已访问url队列   * @author HHZ   *   */ public class VisitedUrlQueue  {      public static HashSet<String> visitedUrlQueue = new HashSet<String>();       public synchronized static void addElem(String url)      {          visitedUrlQueue.add(url);      }       public synchronized static boolean isContains(String url)      {          return visitedUrlQueue.contains(url);      }       public synchronized static int size()      {          return visitedUrlQueue.size();      }  } Test.java 此类为测试类View Code    import java.sql.SQLException;   import com.sreach.spider.UrlDataHanding;  import com.sreach.spider.UrlQueue;   public class Test  {    public static void main(String[] args) throws SQLException    {        String url = "http://www.oschina.net/code/explore/achartengine/client/AndroidManifest.xml";        String url1 = "http://www.oschina.net/code/explore";        String url2 = "http://www.oschina.net/code/explore/achartengine";        String url3 = "http://www.oschina.net/code/explore/achartengine/client";                        UrlQueue.addElem(url);        UrlQueue.addElem(url1);        UrlQueue.addElem(url2);        UrlQueue.addElem(url3);                UrlDataHanding[] url_Handings = new UrlDataHanding[10];                    for(int i = 0 ; i < 10 ; i++)            {                url_Handings[i] = new UrlDataHanding();                new Thread(url_Handings[i]).start();            }     }  } 

说明一下:由于我抓取的是针对oschina的,所以里面的url正则表达式不适合其他网站,需要自己修改一下。你也可以写成xml来配置。

小弟技术有限,有些地方确实写得不好,希望各位大牛不吝指教。

原文链接:http://www.cnblogs.com/HZhoog/archive/2012/05/08/2490374.html

热点排行