论坛首页 Java企业应用论坛

定向爬虫 瓦力

浏览 35019 次
精华帖 (3) :: 良好帖 (3) :: 新手帖 (1) :: 隐藏帖 (4)
作者 正文
   发表时间:2009-05-13  

有些代码写得可有点那个哦。

首先看看PropertiesFactory类的代码,并且这个类也不能这样叫,最好只能叫ProperiesUtil类吧。StringFactory类也一样,最多也只能叫StringUtil类吧。

 

public static Map loadPropertiesFile(Map map, String path)
  {
    Properties prop = new Properties();
    FileInputStream fin = null;
    try {
      fin = new FileInputStream(path);
      prop.load(fin);
      map.putAll(prop);
    }
    catch (FileNotFoundException e) {
      e.printStackTrace();
      try
      {
        fin.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }
    catch (IOException e)
    {
      e.printStackTrace();
      try
      {
        fin.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }
    finally
    {
      try
      {
        fin.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }
    return map;
  }

 一个流被反反复复关了这么多次,虽然说可以重复关闭,但是有一个finally块不就可以了吗,并且你也应该判断一个fin是否为null,否则从finally块的抛出的空指针异常就不太好了。

 

我们再看看StringFactory类的方法。

public static boolean chk(String regex, String s)
  {
    if ((s == null) || (s.trim().length() < 0))
      return false;

    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s.trim());
    return m.find();
  }

 首先chk的命名就不太规范了,chk和check差几个字母呢,有必要这样省不?

还有,s.trim().length()有可能会小于0吗?最少的情况下也就是空字符串也就是等于0吧。

 

其他的类也有问题,如果楼主说这个东西是商业项目的话,我就觉得有点那个了。

 

 

0 请登录后投票
   发表时间:2009-05-13  
不说啥了..咱们组织开源项目吧..弄个爬虫嘿嘿..只要是开源项目hello Word 我都参加
0 请登录后投票
   发表时间:2009-05-13  
java.lang.Object 写道

有些代码写得可有点那个哦。

首先看看PropertiesFactory类的代码,并且这个类也不能这样叫,最好只能叫ProperiesUtil类吧。StringFactory类也一样,最多也只能叫StringUtil类吧。

 

public static Map loadPropertiesFile(Map map, String path)
  {
    Properties prop = new Properties();
    FileInputStream fin = null;
    try {
      fin = new FileInputStream(path);
      prop.load(fin);
      map.putAll(prop);
    }
    catch (FileNotFoundException e) {
      e.printStackTrace();
      try
      {
        fin.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }
    catch (IOException e)
    {
      e.printStackTrace();
      try
      {
        fin.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }
    finally
    {
      try
      {
        fin.close();
      }
      catch (IOException e) {
        e.printStackTrace();
      }
    }
    return map;
  }

 一个流被反反复复关了这么多次,虽然说可以重复关闭,但是有一个finally块不就可以了吗,并且你也应该判断一个fin是否为null,否则从finally块的抛出的空指针异常就不太好了。

 

我们再看看StringFactory类的方法。

public static boolean chk(String regex, String s)
  {
    if ((s == null) || (s.trim().length() < 0))
      return false;

    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(s.trim());
    return m.find();
  }

 首先chk的命名就不太规范了,chk和check差几个字母呢,有必要这样省不?

还有,s.trim().length()有可能会小于0吗?最少的情况下也就是空字符串也就是等于0吧。

 

其他的类也有问题,如果楼主说这个东西是商业项目的话,我就觉得有点那个了。

 

 

 

谢谢 指点

0 请登录后投票
   发表时间:2009-05-14  
感觉功能还是很差,说实话,反编译后发现东西还是很粗糙的,建议使用HTmlparse和neroHtml解析页面,爬虫的控制可以借用Heritrix,也可以自己写个简单的更加DIY!对于爬虫的控制还涉及到关键字提取等等相关复杂的东西,想要做简单点,先不管这个
0 请登录后投票
   发表时间:2009-05-14  
谢谢大家支持,我会继续努力,HTmlparse 说真的一些东西 太标准,往往会产生很多错误,比如某个页面少了标签结束,,这个标准的东西去解析就over了,还国内的网站给出的RSS页面,我用一些 Rome解析,根本解析不了,一点也不标准,,所以迫于无奈自己DIY吧。。
0 请登录后投票
   发表时间:2009-05-18  
楼主对某些采取反扒取技术网站有相应的对策么?

比如频繁访问会被封IP
有没有分布式的设计考虑?

我最近写了个python的爬虫,有空交流一下
0 请登录后投票
   发表时间:2009-05-18  
光是一个爬虫,用Httpclient 4行代码就能下来一个网页了。

关键是之后的事情和通用性。
0 请登录后投票
   发表时间:2009-05-19   最后修改:2009-05-19
geek87 写道
谢谢大家支持,我会继续努力,HTmlparse 说真的一些东西 太标准,往往会产生很多错误,比如某个页面少了标签结束,,这个标准的东西去解析就over了,还国内的网站给出的RSS页面,我用一些 Rome解析,根本解析不了,一点也不标准,,所以迫于无奈自己DIY吧。。


看了一下代码, 较普通,不过LZ的想法是很不错的。

抓取和解析的代码建议好好重构一把。

另外, 这东西可以做得更通用一些。

不限于抓取某个网站。某类应用【还可以扩展到数码等其它产品】

搜索的结果建议保存成xml或者数据库。

因为你往下继续开拓应用: 爬虫和结果显示【比如你提到的GUI】的应用可以分开。

十天半个月更新一次爬虫的结果都可以。



BTW,用GOOGLE APP发布一下你的应用, 效果肯定不错的。

加油~




0 请登录后投票
   发表时间:2009-06-17  
谢谢,你太厉害了
0 请登录后投票
   发表时间:2009-06-17  
  感觉功能不是很完善
 
1, 只做了一些简单抓取功能,  不能多线程
2, 如果网站需要登陆后抓取怎么办?
3, 不支持https
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics