锁定老帖子 主题:定向爬虫 瓦力
精华帖 (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吧。
其他的类也有问题,如果楼主说这个东西是商业项目的话,我就觉得有点那个了。
|
|
返回顶楼 | |
发表时间:2009-05-13
不说啥了..咱们组织开源项目吧..弄个爬虫嘿嘿..只要是开源项目hello Word 我都参加
|
|
返回顶楼 | |
发表时间: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吧。
其他的类也有问题,如果楼主说这个东西是商业项目的话,我就觉得有点那个了。
谢谢 指点 |
|
返回顶楼 | |
发表时间:2009-05-14
感觉功能还是很差,说实话,反编译后发现东西还是很粗糙的,建议使用HTmlparse和neroHtml解析页面,爬虫的控制可以借用Heritrix,也可以自己写个简单的更加DIY!对于爬虫的控制还涉及到关键字提取等等相关复杂的东西,想要做简单点,先不管这个
|
|
返回顶楼 | |
发表时间:2009-05-14
谢谢大家支持,我会继续努力,HTmlparse 说真的一些东西 太标准,往往会产生很多错误,比如某个页面少了标签结束,,这个标准的东西去解析就over了,还国内的网站给出的RSS页面,我用一些 Rome解析,根本解析不了,一点也不标准,,所以迫于无奈自己DIY吧。。
|
|
返回顶楼 | |
发表时间:2009-05-18
楼主对某些采取反扒取技术网站有相应的对策么?
比如频繁访问会被封IP 有没有分布式的设计考虑? 我最近写了个python的爬虫,有空交流一下 |
|
返回顶楼 | |
发表时间:2009-05-18
光是一个爬虫,用Httpclient 4行代码就能下来一个网页了。
关键是之后的事情和通用性。 |
|
返回顶楼 | |
发表时间:2009-05-19
最后修改:2009-05-19
geek87 写道 谢谢大家支持,我会继续努力,HTmlparse 说真的一些东西 太标准,往往会产生很多错误,比如某个页面少了标签结束,,这个标准的东西去解析就over了,还国内的网站给出的RSS页面,我用一些 Rome解析,根本解析不了,一点也不标准,,所以迫于无奈自己DIY吧。。
看了一下代码, 较普通,不过LZ的想法是很不错的。 抓取和解析的代码建议好好重构一把。 另外, 这东西可以做得更通用一些。 不限于抓取某个网站。某类应用【还可以扩展到数码等其它产品】 搜索的结果建议保存成xml或者数据库。 因为你往下继续开拓应用: 爬虫和结果显示【比如你提到的GUI】的应用可以分开。 十天半个月更新一次爬虫的结果都可以。 BTW,用GOOGLE APP发布一下你的应用, 效果肯定不错的。 加油~ |
|
返回顶楼 | |
发表时间:2009-06-17
谢谢,你太厉害了
|
|
返回顶楼 | |
发表时间:2009-06-17
感觉功能不是很完善
1, 只做了一些简单抓取功能, 不能多线程 2, 如果网站需要登陆后抓取怎么办? 3, 不支持https |
|
返回顶楼 | |