jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于 JQuery 的操作方法来取出和操作数据。
jsoup的主要功能如下:
如果对jsoup不熟悉,请移步 http://jsoup.org/
JDIC 全程是 JDesktop Integration Components 目的是构建消除本机应用程序和 Java 等价物之间差距的组件。JDIC 单一的 Java API 允许应用程序接进本机操作系统特性,同时保持跨平台支持。它目前提供了本机 Web 浏览器(Internet Explorer 或 Mozilla) 支持、系统托盘支持、文件扩展集成和其他桌面特性。
官网: http://java.net/projects/jdic/
svn地址,直接下了看例子吧:https://svn.java.net/svn/jdic~svn
helloword程序: http://plplum.blog.163.com/blog/static/31032400200910994034328/
另,刚刚找到的一篇好文章,Java 网页浏览器组件介绍: http://www.ibm.com/developerworks/cn/java/j-lo-browser/index.html
jsoup 的解析很好用,但是jsoup不能解析动态的代码,于是就有了JDIC调用ie内核,然后执行
Java代码
这段代码得到当前的html,然后交由jsoup 进行解析
示例目标:
招聘网站,希望出来的结果按照公司规模来排序
购物网站,希望商品按照评论的多少来排序
图片搜索,快速保存所有的结果
。。。。。。
下面的演示实现了找出标题,百度图片搜索的前2页,智联招聘的前6页
主类,扩展的时候直接添加definiteUrls.add(new xxx());即可
这个类是调用ie浏览器,执行javascript代码,可以不管
这个是抽象类,每个网站要实现对应的方法
getNextPageJavaScript下一页javascript代码,可以是点击下一页按钮,也可以是直接换url
isEndPage是否为最后一页
page当前页面最终的html代码(动态的html代码)
//以下为具体的实现类,扩展的时候直接继承一个DefiniteUrl
有图有真相
附件中有源码,eclipse导出
上面是当前代码,求更好的解决方案
现在取得当前的html使用了定时器,1秒后执行,感觉很不精确,有没有什么更好的方式,比如判断当前页面所有的内容都已经加载完了,其它的javascript都已经执行完了的代码?