首页 > 其他分享 >网络爬虫读取js生成的页面

网络爬虫读取js生成的页面

时间:2023-03-22 15:05:45浏览次数:43  
标签:cobra 读取 JavaScript 爬虫 js gg html static


还有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. }


 



执行结果:



google



测试成功。

标签:cobra,读取,JavaScript,爬虫,js,gg,html,static
From: https://blog.51cto.com/u_2650279/6142624

相关文章

  • 全网最详细中英文ChatGPT-GPT-4示例文档-官网推荐的48种最佳应用场景——从0到1快速入
    @目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载......
  • 可视化组件plotly.js绘制简单图表示例
    scatter散点图<divid="myDiv"style="width:600px"></div><divid="myDiv1"style="width:600px"></div><divid="myDiv2"style="width:600px"></div><divid=&......
  • JSGRID loaddata显示超级多空行
    这个逼问题困扰了我两天了作为一个主后端的程序员初体验前端技术栈真的麻之又麻以防万一请先确认是不是和我一个情况如果是请往下看首先我们需要念一段咒语json......
  • js笔记
    forEachmap对原函数的影响arr1=[{a:1},{a:2},{a:3},{a:4}];arr2=[1,2,3,4];//forEach没有返回值arr1.forEach(i=>{//引用类型整个赋值不变i=i.a......
  • threejs点击事件(不同大小的画布)
     threejs点击事件(不同大小的画布) 一、直接是window宽高的画布,点击交互的方案onClick(event){event.preventDefault();this.mouse.x=(event.clie......
  • JSP 超大文件上传解决方案:分片断点上传(一)
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求     ......
  • three.js加载环境贴图
     three.js加载环境贴图 HDR的全称是HighDynamicRange,即高动态范围;动态范围是指图像中所包含的从“最亮”至“最暗”的比值,也就是图像从“最亮”到“最暗”之间灰度......
  • STM32+DHT11读取温湿度
    STM32+DHT11读取温湿度使用的是stm32f103c8t6的最小系统开发版。DHT11对时序要求很高,要注意延时函数的延时时间是否准确,延时函数使用的是正点原子的延时函数。通讯过程如......
  • netcore读取、写入文件内容
    读取文件内容使用System.IO.StreamReader文档地址​​System.IO.StreamReader​​.FileStreamfileStream=newFileStream("file.txt",FileMode.Open);using(StreamRe......
  • java8读取Access数据库
       添加pom配置文件<dependency><groupId>net.sf.ucanaccess</groupId><artifactId>ucanaccess</artifactId><version>4.0.4</version></dependency......