|
src
|
其子目录中包含了源文件的所有类型
|
|
src/main
|
最终应用的主体部分,代码只是其中的一部分
|
|
src/main/java
|
组成应用的java代码部分,其下的子目录将按照包结构排列
|
|
src/main/resources
|
最终应用的其它组成部分,例如META-INF/MANIFEST.MF
|
|
src/test
|
最终应用的单元测试部分
|
|
src/test/java
|
测试代码的源文件
|
|
src/test/resources
|
测试所利用的资源文件
|
目前解析ajax的方式是WebClient自动执行的,只需等待一定时间就可获得运行后的结果,调用方法是:其中参数timeoutMillis通过阅读源代码发现是运行JS文件的最长时间,如果超过这个指定时间,那么后面的JS解析工作也不再进行。该方法在API有以下注释Experimental API: May be changed in next release and may not yet work perfectly! ,所以在后续版本的htmlunit的使用时应注意该方法的改动。对于复选框等组件的信息提取也可以做到,只是在实际使用中很多元素的提取比较麻烦。这是由于htmlunit中希望利用ID或者Name的方法提取网页元素,而网页中往往都没有这样的标识,而是利用HtmlElement. getElementsByAttribute(String elementName,String attributeName, String attributeValue)方法去提取信息。结论:信息提取的功能非常强大,但由于网页的不规范,很多网页元素只能用稍微麻烦的方法来提取,当网页变动时的影响会比利用ID或者Name提取的方式要大。|
|
Htmlunit
|
简单模型
|
|
网页下载CPU占用率
|
17%
|
2%
|
|
信息提取CPU占用率
|
约50%
|
约50%
|
|
内存占用率
|
13MB
|
<1MB
|
|
下载用时
|
约3秒
|
约0.3秒
|
|
解析JS用时
|
约1秒
|
无解析JS功能
|
|
信息提取用时
|
<1ms
|
<1ms
|
WebClient.waitForBackgroundJavaScript(long timeoutMillis)方法的最大等待时间参数设置没有太好的依据,当设置成100ms时将无法获取我们需要的信息,而设置1000ms就可以,然而设置200,000ms居然真的会花费3分钟多的时间。经初步研究发现是由于有一个Job的工作一直在处于执行状态而不结束造成。测试了6间房、新浪视频等多个站点,都不同程度存在该问题。(String elementName,String attributeName, String attributeValue)的性能未知,如果有必要对DIV的class也可以建立索引以方便我们的实际应用。
















