网络爬虫读取js生成的页面
来源:互联网 发布:数据侠客行txt全集下载 编辑:程序博客网 时间:2024/06/06 09:55
还有js逻辑的页面,对网络爬虫的信息抓取工作造成了很大障碍。DOM树,只有执行了js的逻辑才可以完整的呈现。而有的时候,有要对js修改后的dom树进行解析。在搜寻了大量资料后,发现了一个开源的项目cobra。cobra支持JavaScript引擎,其内置的JavaScript引擎是mozilla下的 rhino,利用rhino的API,实现了对嵌入在html的JavaScript的解释执行。测试用例:
js.html
<html> <title>test javascript</title> <script language="javascript"> var go = function(){ document.getElementById("gg").innerHTML="google"; } </script> <body onLoad="javascript:go();"> <a id = "gg" onClick="javascript:go();" href="#">baidu</a> </body> </html>
Test.java
package net.cooleagle.test.cobra;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import java.net.URL;import org.lobobrowser.html.UserAgentContext;import org.lobobrowser.html.domimpl.HTMLDocumentImpl;import org.lobobrowser.html.parser.DocumentBuilderImpl;import org.lobobrowser.html.parser.InputSourceImpl;import org.lobobrowser.html.test.SimpleUserAgentContext;import org.w3c.dom.Document;import org.w3c.dom.Element;public class Test{ private static final String TEST_URI = "http://localhost/js.html"; public static void main(String[] args) throws Exception { UserAgentContext uacontext = new SimpleUserAgentContext(); DocumentBuilderImpl builder = new DocumentBuilderImpl(uacontext); URL url = new URL(TEST_URI); InputStream in = url.openConnection().getInputStream(); try { Reader reader = new InputStreamReader(in, "ISO-8859-1"); InputSourceImpl inputSource = new InputSourceImpl(reader, TEST_URI); Document d = builder.parse(inputSource); HTMLDocumentImpl document = (HTMLDocumentImpl) d; Element ele = document.getElementById("gg"); System.out.println(ele.getTextContent()); } finally { in.close(); } }}
执行结果:
google
测试成功。
实例下载:http://download.csdn.net/detail/liujianjun422/5693963
- 网络爬虫读取js生成的页面
- python-网络爬虫初学四:cookie的存储与读取
- 页面读取js时的优先级
- 网络爬虫,获取页面图片
- 网络爬虫:抓取页面图片
- js本地缓存的生成和读取
- 网络爬虫中动态的获取页面编码
- 网络爬虫--如何抓取html页面和httpClient的使用
- 简单的网络爬虫(获取页面中的url)
- 利用phantomjs抓取js生成的页面
- Python爬虫用Selenium抓取js生成的文件(一)
- JAVA 爬虫获取js动态生成的网页数据
- node.js实现简单的网络爬虫程序
- Node.js 实现爬虫(2) —— 多页面的爬虫程序
- js页面生成二维码
- 网易页面的网络爬虫,获取网易页面的所有文本信息
- php读取动态页面生成静态html文件的方法
- poi页面读取excel,生成相应的excel导出
- 亲测Android TextView的文字滚动(marquee)效果
- UVA 111000 The Trip, 2007
- 第三章 顺时针打印矩阵
- keySet()与entrySet()
- C++ operator两种用法
- 网络爬虫读取js生成的页面
- 重置Data Guard后主数据库重启遭遇ORA-16072
- 类写:用指针动态开辟二维数组,有什么问题?请高手指教
- php 分割/切割图片
- linux 软连接与硬链接
- Linux Shell脚本pause命令
- UVA 1445 Cubist Artwork
- eclipse 中的注释 快捷键
- 【xtk推荐】XP、win7主题下载