还有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
测试成功。
相关推荐
要获取动态生成的数据,爬虫开发者需要寻找并分析JavaScript代码中所使用的数据接口。这些接口通常会向服务器发送Ajax请求,获取动态内容后更新到页面上。通过分析这些请求,开发者可以找到数据接口,并使用...
基于javaScript从高德地图爬虫获取建筑轮廓,生成geojson文件,mapbox定制自定义地图,echarts-gl生成,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md...
网络爬虫是一种自动获取网页信息的技术,它模拟人类浏览网页的行为,通过编程方式遍历互联网上的页面,收集所需数据。在网络爬虫的论文答辩PPT中,主要涉及以下几个知识点: 1. **网络爬虫的基本原理**:网络爬虫...
为了使网络爬虫能够正确地执行网页上的JavaScript代码并获取动态生成的内容,研究者还需要解决脚本执行引擎与切片模块之间的互操作问题。通常情况下,网络爬虫需要模拟浏览器环境来执行JavaScript代码。这就涉及到...
在互联网世界中,数据无处不在,而网页中的动态数据往往是通过JavaScript生成的,特别是基于JQuery库的数据处理。本文将深入探讨如何处理和解析这些由JS生成的、对爬虫来说具有挑战性的数据。 首先,我们需要理解...
- **处理动态内容**:现代网页常使用JavaScript生成内容,可能需要使用如Selenium等工具处理。 - **异常处理**:考虑到网络波动、服务器错误等情况,应编写健壮的异常处理机制。 6. **法律与道德** 在进行网络...
7. **第七章:动态网页与JavaScript**:面对越来越多的动态加载内容,讲解如何处理JavaScript生成的页面,如使用Selenium库。 8. **第八章:爬虫框架Scrapy**:介绍Scrapy框架,它是Python中强大的爬虫开发工具,...
本章讲解了如何处理JavaScript渲染的页面,包括使用Selenium模拟浏览器行为和分析JavaScript生成的网络请求。 第6章 表单交互:很多网站通过表单提交信息,本章介绍了如何使用Python模拟用户填写和提交表单,包括...
动态网页的抓取需要处理JavaScript、AJAX等技术生成的内容,这通常需要利用像Selenium这样的库来模拟浏览器行为。聚焦爬虫则更注重于特定主题的深度挖掘,它能够在海量信息中筛选出与特定主题相关的内容,以提高搜索...
对于爬虫来说,它需要模拟浏览器的行为,执行JavaScript代码来获取这些动态生成的内容。 1. **使用Headless Browser**:一种常见的方法是利用Headless Browser,如无头Chrome或Firefox。它们是完整的浏览器,但没有...
网络爬虫是互联网数据获取的重要工具,主要用于自动化地抓取网页信息。本套资料专注于Java语言实现的网络爬虫技术,旨在帮助用户掌握如何利用Java进行高效、稳定的网页抓取。下面将详细介绍Java网络爬虫的相关知识点...
总之,《自己动手写网络爬虫》这本书将带你走进网络爬虫的世界,通过学习,你可以掌握Java环境下爬虫开发的全过程,从基础知识到高级技巧,从理论到实践,全方位提升自己的编程和数据获取能力。
与传统爬虫相比,深层网络爬虫面临着更多挑战,如需要处理复杂的动态网页生成机制、应对数据库查询和表单提交等。 **4. 研究目标** 深层网络爬虫的研究目标主要包括以下几个方面: - **提升搜索效率与准确性**:...
动态网络爬虫与静态爬虫不同,它能处理JavaScript生成的内容,更接近用户的实际浏览体验。 一、网络爬虫基础 1. 网络爬虫的原理:通过模拟浏览器发送HTTP请求到服务器,获取响应的HTML或其他格式的网页内容,然后...
在IT领域,网络爬虫是数据获取的重要工具,特别是在大数据分析和信息挖掘中。Python作为一门强大且易学的语言,因其丰富的库支持而成为编写网络爬虫的首选。本资源"精通Python网络爬虫源码"聚焦于使用Python进行网络...
Selenium可以模拟浏览器行为,加载完整的网页内容,包括那些由JavaScript生成的部分。通过WebDriver接口,我们可以控制浏览器执行特定的操作,如点击链接、填写表单,进而爬取到动态内容。 为了防止爬虫过于频繁地...
了解并掌握网络爬虫的原理和技术,不仅可以提升数据获取的效率,还能为数据分析、业务决策提供强有力的支持。不过,使用网络爬虫时务必遵守法律法规,尊重网站的Robots协议,避免对目标服务器造成过大的负担。
【爬虫jsp获取网页源码】这一主题主要涉及网络爬虫技术在Java Server Pages (JSP)中的应用,以及如何通过前端交互获取网页源码。爬虫是互联网数据挖掘的重要工具,它能够自动地遍历网页,抓取所需信息。在JSP环境下...
1. **动态内容**:许多网络游戏的信息是动态生成的,例如实时的玩家状态、排行榜等,这要求爬虫具备处理JavaScript的能力,如使用Selenium、Puppeteer等工具。 2. **反爬机制**:游戏公司可能会设置反爬策略,如...
本教程"Python-Python3爬虫实战JS加解密逆向教程"聚焦于如何处理JavaScript加密和混淆的数据,以便在爬虫过程中获取有效信息。这通常涉及到对前端JavaScript代码的理解、逆向工程以及加解密算法的应用。下面,我们将...