还有js逻辑的页面,对网络爬虫的信息抓取工作造成了很大障碍。DOM树,只有执行了js的逻辑才可以完整的呈现。而有的时候,有要对js修改后的 dom树进行解析。在搜寻了大量资料后,发现了一个开源的项目cobra。cobra支持JavaScript引擎,其内置的JavaScript引擎是 mozilla下的 rhino,利用rhino的API,实现了对嵌入在html的JavaScript的解释执行。测试用例:
js.html
1. <html>
2. <title>test javascript</title>
3. <script language="javascript">
4. var go = function(){
5. document.getElementById("gg").innerHTML="google";
6. }
7. </script>
8. <body onl oad="javascript:go();">
9. <a id = "gg" onClick="javascript:go();" href="#">baidu</a>
10. </body>
11. </html>
Test.java
1. package
2. import
3. import
4. import
5. import
6.
7.
8. import
9. import
10. import
11. import
12. import
13. import
14. import
15.
16.
17. public class
18. private static final String TEST_URI = "http://localhost/js.html";
19.
20. public static void main(String[] args) throws
21. new
22. new
23. new
24. InputStream in = url.openConnection().getInputStream();
25. try
26. new InputStreamReader(in, "ISO-8859-1");
27. new
28. Document d = builder.parse(inputSource);
29. HTMLDocumentImpl document = (HTMLDocumentImpl) d;
30. "gg");
31. System.out.println(ele.getTextContent());
32.
33. finally
34. in.close();
35. }
36. }
37. }
执行结果:
测试成功。
标签:cobra,读取,JavaScript,爬虫,js,gg,html,static From: https://blog.51cto.com/u_2650279/6142624