读书人

动态爬虫jsoup+jdic兑现

发布时间: 2012-10-29 10:03:53 作者: rapoo

动态爬虫jsoup+jdic实现

准备资料

jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。

jsoup的主要功能如下:

  1. 从一个URL,文件或字符串中解析HTML;
  2. 使用DOM或CSS选择器来查找、取出数据;
  3. 可操作HTML元素、属性、文本;
如果对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~svnhelloword程序: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内核,然后执行
?这段代码得到当前的html,然后交由jsoup 进行解析

这个类是调用ie浏览器,执行javascript代码,可以不管

?

?

?

?

附件中有源码,eclipse导出

?

?

?

?

遗留问题

?

?

上面是当前代码,求更好的解决方案

?

现在取得当前的html使用了定时器,1秒后执行,感觉很不精确,有没有什么更好的方式,比如判断当前页面所有的内容都已经加载完了,其它的javascript都已经执行完了的代码?

at sun.awt.windows.WComponentPeer.hide(Native Method)
at java.awt.Component.removeNotify(Component.java:5979)
at org.jdesktop.jdic.browser.WebBrowser.access$201(Unknown Source)
at org.jdesktop.jdic.browser.WebBrowser$1.run(Unknown Source)
(这个输出后来查了一下,好像是我电脑系统的问题,少了微软的运行环境,
只输出“百度”或“智联”就没有这个Exception )

(2)用火狐(3.6.3)为默认浏览器
先输出了2行“isDefaultBrowserMozilla”
然后是
“Can't execute the native embedded browser. Error message: java.io.IOException: 文件名、目录名或卷标语法不正确。”
下面就终止了。

(3)一个问题 “图片搜索,快速保存所有的结果” 在什么地方体现出来?

学习中 谢谢。
3 楼 1202 2011-08-29 你好,我最近在学习使用jsoup,发现这样一个问题:
我像使用div.div.m_l_hot_im 来选取某个class为m_l_hot_im 的div,可结果是连class为div.m_l_hot_iml及div.m_l_hot_imr的所有的以div.m_l_hot_im 开头的都选择了,请问这是一个bug吗 4 楼 laitaiyang520 2011-12-20 1202 写道你好,我最近在学习使用jsoup,发现这样一个问题:
我像使用div.div.m_l_hot_im 来选取某个class为m_l_hot_im 的div,可结果是连class为div.m_l_hot_iml及div.m_l_hot_imr的所有的以div.m_l_hot_im 开头的都选择了,请问这是一个bug吗
不是,那相当于是一个模糊查询一样,用div[class=m_l_hot_im]就可以准确的选择到想要的数据模块

读书人网 >JavaScript

热点推荐