使用Jsoup(parse html) + ScriptEngine(執行js)
import java.net.URL;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class BbTest3 {
public static void main(String args[]) throws Exception {
// 使用json來parse html
String url = "123456";
Document doc = Jsoup.parse(new URL(url), 3000);
// 取得所有的script tag
Elements eles = doc.getElementsByTag("script");
for (Element ele : eles) {
// 檢查是否有detailInfoObject字串
String script = ele.toString();
if (script.indexOf("detailInfoObject") > -1) {
// 只取得script的內容
script = ele.childNode(0).toString();
// 使用ScriptEngine來parse
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
engine.eval(script);
// 取得你要的變數
Object obj = engine.get("detailInfoObject");
System.out.println("detailInfoObject = " + obj);
// 將obj轉成Json物件
JSONObject json = JSONObject.fromObject(obj);
System.out.println("json = " + json);
// 取得欄位
System.out.println("destInfo = " + json.get("destInfo"));
// 取得欄位(array type)
JSONArray scans = json.getJSONArray("scans");
for (int i = 0, max = scans.size(); i < max; i++) {
JSONObject child = (JSONObject) scans.get(i);
System.out.println("scans[" + i + "] = " + child);
}
}
}
}
}
相关推荐
2. **解析HTML文档**:下载的HTML内容可以通过`parse()`方法解析成一个`Document`对象,这是Jsoup处理HTML的基础。 ```java String html = "<html><head><title>Test</title></head><body><p>Hello World</p></...
5. **使用JSoup解析HTML**:将响应体的字符串传递给JSoup的parse方法,得到Document对象。 6. **数据提取**:使用JSoup的select方法通过CSS选择器定位元素,或者使用getElementById、getElementsByTag等方法提取...
5. 使用Jsoup连接目标网站,解析HTML并提取小说信息,通过MyBatis接口存入数据库。 6. 设计JSP页面,通过Servlet或Controller接收请求,调用MyBatis查询数据,动态填充页面内容。 7. 部署应用到服务器,如Tomcat,...
本篇文章以"一篇文章精通系列-案例开发-巨细"为主题,详细介绍了如何使用HttpClient5、jsoup、WebMagic以及spider-flow这四个关键工具来构建一个强大的Java爬虫系统。以下是对这些工具和技术的深入解析。 首先,...
1. **Jsoup连接(Connection)**:使用Jsoup的第一步是建立到目标网页的连接。这可以通过`Jsoup.connect()`方法完成,它允许设置请求头、HTTP方法(GET或POST)以及数据提交等。 2. **HTML解析**:一旦建立了连接,...
使用`Jsoup.parse()`方法解析HTML字符串,得到一个`Document`对象,表示整个HTML文档的结构: ```java Document document = Jsoup.parse(htmlContent); ``` 3. **选择和操作HTML元素** `jsoup`提供了丰富的...
Jsoup是一个用于处理实际世界HTML的Java库,而Jdic则是一个Java的DOM解析器,能够执行JavaScript,从而获取页面上的动态内容。 首先,我们需要了解Jsoup的基本用法。Jsoup提供了丰富的API来解析HTML文档,提取结构...
在这个项目中,我们使用Jsoup配合Java,实现了抓取整个网站的功能,包括其中的图片、CSS样式表和JavaScript文件。通过这样的工具,我们可以对网页进行离线浏览或者备份,甚至进行数据分析。 首先,我们要理解Jsoup...
Document doc = Jsoup.parse(htmlContent); // 使用CSS选择器找到视频列表 Elements videoElements = doc.select("div.video-list li"); for (Element videoElement : videoElements) { String title = ...
例如,可以先发送一个GET请求获取HTML,然后用Jsoup解析其中的JavaScript动态加载的数据源,再发送额外的请求来获取这些资源。 此外,Jsoup的兼容性极佳,它能很好地处理各种不规范的HTML,尽可能地恢复其结构,这...
首先,HtmlUnit加载整个网页,执行JavaScript,然后Jsoup解析HtmlUnit得到的HTML内容,提取我们需要的数据。这样做的好处在于: 1. **完整内容获取**:HtmlUnit处理JavaScript,确保我们获取到所有动态加载的内容。...
**Android使用Jsoup技术解析HTML** Jsoup是一个Java库,专为处理真实世界的HTML而设计。在Android开发中,我们经常需要从网页抓取数据,比如解析新闻标题、获取图片链接或者提取用户评论等。Jsoup提供了一种简单、...
Document doc = Jsoup.parse(xmlString, "", Parser.xmlParser()); ``` 在压缩包文件"JsoupDemo"和"Jsoup"中,可能包含了使用Jsoup进行DOM解析的示例代码。这些代码通常会展示如何连接到URL,选择元素,提取数据...
JSoup 提供了方便的 API 用于解析 HTML 文档,而 HttpClient 则是 Apache 开源组织提供的一个用于执行 HTTP 请求的强大工具。本文将深入探讨如何结合这两者构建一个简单的 Java 爬虫。 首先,我们需要理解 **JSoup*...
本项目使用了Java技术栈,具体包括SpringBoot、MyBatisPlus、Jsoup和MySQL数据库,这四个组件构成了一个高效且功能强大的后端系统。 1. **SpringBoot** SpringBoot是Spring框架的一个扩展,它简化了Spring应用的...
在实际项目中,可能还需要处理JavaScript动态生成的内容,但Jsoup本身并不支持执行JavaScript。如果需要这方面的功能,可能需要结合其他工具,如Selenium WebDriver。 为了使用Jsoup,你需要将对应的jar包添加到...
本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...
在本文中,我们将深入探讨如何使用Jsoup解析HTML文件,并进一步将解析的数据导出到Excel表格。 首先,我们需要理解Jsoup的基本用法。Jsoup的核心在于`Connection`和`Document`对象。`Connection`用于建立与网页的...
实际操作时,可能还需要考虑登录、分页、动态加载等问题,这些可以通过HttpClient设置cookie和处理重定向,或者使用Jsoup的Jsoup.connect模拟JavaScript执行来解决。 总之,HttpClient和Jsoup是Java开发者进行网页...
例如,你可以先使用Jsoup解析网页内容,提取需要的数据,然后用HTTPClient发送POST请求到服务器,将这些数据上传。 在使用这些库时,需要将对应的jar包添加到项目的类路径中。在这个压缩包中,"jsoup-1.11.1.jar"是...