2007-11-10
用htmlparser解析google搜索结果页面里的url
htmlparser是一个非常棒的html页面解析器,它自带的filterbuilder很不错。到sourceforge下载后,解压好就可以用了。运行安装目录下的bin里面的filterbuilder.bat就可打开filterbuilder,如下图(点击看大图):
在窗口最底下的文本框里输入要parse的页面的url, 在Operation菜单里选择Fetch Page就会载入页面。左边的区域可以放置各种过滤器。先选中左边过滤器区域里的某个过滤器,再点击工具栏上要使用的过滤器,就会把过滤器加到之前选中的过滤器里面了。点击Operation菜单里的Excute Filter,就会把当前的过滤器应用到载入的页面了,新结果会显示在校窗口里。最后保存,就会得到一个java文件,里面包含了过滤html的代码。
我用这个工具做了一个从google搜索返回页面里取出搜索结果url 的方法,非常简单,代码如下:
private List<string> getUrlsBySearchGoogle(String keywords, int start) throws UnsupportedEncodingException { TagNameFilter filter0 = new TagNameFilter (); filter0.setName ("A"); HasAttributeFilter filter1 = new HasAttributeFilter (); filter1.setAttributeName ("class"); filter1.setAttributeValue ("l"); NodeFilter[] array0 = new NodeFilter[2]; array0[0] = filter0; array0[1] = filter1; AndFilter filter2 = new AndFilter (); filter2.setPredicates (array0); NodeFilter[] array1 = new NodeFilter[1]; array1[0] = filter2; FilterBean bean = new FilterBean (); bean.setFilters (array1); bean.setURL("http://www.google.com/search?complete=1&start="+start+"&q=" + URLEncoder.encode(keywords, "UTF-8")); NodeList nodes = bean.getNodes(); List<string> result = new ArrayList<string>(); for(int i = 0; i < nodes.size(); i++) { LinkTag link = (LinkTag) nodes.elementAt(i); result.add(link.getLink()); } return result; }
评论
water84222
2008-04-28
因为,没有配置java_home,或者可以再cmd下运行。
water84222
2008-04-25
为什么,我下载后的只有filterbuilder.cmd,而且双击后,没有任何反应?
发表评论
- 浏览: 3150 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
优化jboss以提高性能
为何看不全,只显示一部分呢!?
-- by lenhome -
优化richfaces,给seam提 ...
受教了 3Q~
-- by 40020072 -
用htmlparser解析google搜 ...
因为,没有配置java_home,或者可以再cmd下运行。
-- by water84222 -
用htmlparser解析google搜 ...
为什么,我下载后的只有filterbuilder.cmd,而且双击后,没有任何反 ...
-- by water84222 -
通过Annotation和Struts2 ...
d
-- by evonli






评论排行榜