还有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
测试成功。
相关推荐
主要介绍了Java爬虫Jsoup+httpclient获取动态生成的数据的相关资料,需要的朋友可以参考下
爬到的内容,用处不大,爬虫爬到的内容_JS生成的数据基于JQuery
传统的静态爬虫只能获取静态网页的内容,无法获取通过JavaScript等技术动态生成的内容。而动态爬虫通过模拟浏览器的行为,可以执行JavaScript代码并获取动态生成的内容。 对于动态网页,通常使用无界面浏览器...
主要介绍了Python3实现抓取javascript动态生成的html网页功能,结合实例形式分析了Python3使用selenium库针对javascript动态生成的HTML网页元素进行抓取的相关操作技巧,需要的朋友可以参考下
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它可以让JavaScript在服务器端运行,因此它非常适合用于编写网络爬虫。本文将介绍如何使用ChatGPT学习Node.js爬虫。 ChatGPT是一种基于GPT-2的自然语言处理...
1.本项目基于Python作为爬虫技术,使用flask作为web项目的开发框架。 2.本项目预期实现的功能有: 2.1简单的web页面展示,将需要搜索的结果使用词云,饼状图,柱状图以及表格这四种形式表现出来。 2.2输入关键字后...
然后用Javascript做各种效果。 【目前想做的爬虫】 网易歌词爬虫 微博爬虫 QQ爬虫 知乎日报 各个爬虫的详细功能 这里目前只说已经做完的爬虫。 【网易歌词爬虫】 这是一个爬取歌词然后进行分析的小程序。根据...
现在准备添加登陆内容获取,JS内容生成为正常的Document树.使用NoSql构建去重库. 取到链接.查看去重库中是否存在,如存在则不加入到List中.还有.感觉List不是一个很好的方式,希望大神给出代替方案...
2.x版本中集成了selenium,可以处理JavaScript生成的数据。WebCollector特性:1、自定义遍历策略,可完成更为复杂的遍历业务,例如分页、AJAX2、可以为每个 URL 设置附加信息(MetaData),利用附加信息可以完成很多...
若数据是由 JS 计算生成的,还须重现计算过程,体验不好,开发效率不高。 使用 selenium,可以很大程度上绕过这些坑,但 selenium 效率不高。因此,这个库将 selenium 和 requests 合而为一,不同须要时切换相应模式...
长期以来,爬虫抓取 客户端javascript渲染生成的html页面 都极为 困难, Java里面有 HtmlUnit, 而Python里,我们可以使用独立的跨平台的CasperJS。 创建site.js(接口文件,输入:url,输出:html file) //USAGE: ...
这个主要做的是模拟登录,然后获取自己AC过的题(当然没AC过的也可以获取)然后再去爬题目内容,和自己提交过的AC代码(WA的代码也能得到),基本都是用python写的,最近在练js,所以交的js也都爬了下来。...
我们测试了谷歌爬虫是如何抓取 JavaScript,下面就是我们...我们也确认 Google 能渲染整个页面并读取 DOM,由此能收录动态生成的内容。 2. DOM 中的 SEO 信号(页面标题、meta 描述、canonical 标签、meta robots 标签等
还包含一个Python爬虫文件,通过调用JS算法生成加密参数(部分高级API是需要加密参数的),这里大家可以查看作者相对文章,里面有详细的分析与算法还原细节,包括对数据接口的分析以及Python代码示例的使用 ...
(2)获取js脚本链接需要该条微博的mid参数 (3)获取mid参数需要访问微博主页 (4)访问微博主页需要先进行访客认证 (5)微博主页几乎是由弹窗构成,所有html代码被隐藏在FM.view()函数的参数中,该参数是json格式...
我们在写爬虫是遇到最多的应该就是js反爬了,今天分享一个比较常见的js反爬,这个我已经在多个网站上见到过了。 我把js反爬分为参数由js加密生成和js生成cookie等来操作浏览器这两部分,今天说的是第二种情况。 目标...
一、背景 希望根据企业名称查询其经纬度,所在的省份、城市等信息...经过分析,这里列示的企业信息是用JavaScript动态生成的。服务器最初传过来的未经渲染的HTML如下: 注意其中标注出来的JS代码。有意思的是,企业
hexin-v参数的生成方式,可以解决同X顺的参数问题。
高效的java爬虫,内附代码 sql数据表 ,main方法启动。...避免了jsoup无法抓取js代码生成的数据内容的弊端。避免了client无法一次性获取大量信息的弊端。有能获取静态页面形成之前的对方数据内容的高手 欢迎借阅指导
本项目是一个开箱即用的爬虫项目!通过配置信息满足你对各维度字段信息的抓取 项目中包含X-Bogus算法的JS文件!通过携带X-Bogus参数完成数据的抓取,并将数据结构化进行存储到本地Excel文件,字段齐全(页面有的任何...