JavaFX WebView的采集开发方法是什么
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容主要讲解"JavaFX WebView的采集开发方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JavaFX WebView的采集开发方法
千家信息网最后更新 2025年12月01日JavaFX WebView的采集开发方法是什么
本篇内容主要讲解"JavaFX WebView的采集开发方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JavaFX WebView的采集开发方法是什么"吧!
背景
最近想做一个桌面版的客户端,能够加载连接,获取源码等,主要用于快速的获取网站的栏目,便与爬虫该栏目下的最新信息。
采用技术
java 1.8
相关插件介绍
JavaFX是:
•用于创建和交付桌面应用程序的软件平台,以及可以在各种设备上运行的富Internet应用程序(RIA)。
•一组图形和媒体包,使开发人员能够设计,创建,测试,调试和部署在不同平台上一致运行的富客户端应用程序。WebView:
使用WebKit HTML技术的Web组件,可以在JavaFX应用程序中嵌入Web页面。在WebView中运行的JavaScript可以调用Java API,Java API可以调用在WebView中运行的JavaScript。
JavaFX中添加了对其他HTML5功能的支持,包括Web套接字,Web Worker和Web字体以及打印功能。JavaFX WebView:
•JavaFX WebView 是一种迷你浏览器(也称为嵌入式浏览器),它通过JavaFX 应用程序中的API提供Web查看器和完整浏览功能 。
•此浏览器基于 WebKit,这是一个支持HTML5,JavaScript,CSS,DOM渲染和SVG图形的开源Web浏览器引擎。
•WebView类是Node类的扩展。
•嵌入式浏览器从Node类继承所有字段和方法,因此它具有其所有功能。
•它封装了WebEngine对象,将HTML内容合并到应用程序的场景中,并提供应用效果和转换的属性和方法。
•在WebView对象上调用的getEngine()方法返回与之关联的Web引擎。
•构成嵌入式浏览器的类位于javafx.scene.web包中。•WebView 使开发人员能够在其Java应用程序中实现以下功能:
◦从本地或远程URL呈现HTML内容
◦支持历史记录并提供后退和前进导航
◦重新加载内容
◦将效果应用于Web组件
◦编辑HTML内容
◦执行JavaScript命令
◦执行从JavaScript到JavaFX的上行调用
◦处理事件• 除了支持CSS3和ecmascript6(ES6)之外,WebView组件还支持以下HTML5功能:
◦DOM3
◦画布
◦媒体播放
◦表单控件(除外)
◦可编辑的内容
◦历史维护
◦支持, Web引擎:
1.是一个能够一次管理一个网页的非可视对象
2.通过其API提供基本网页功能。
3.它支持用户交互,例如导航链接和提交HTML表单,但它不直接与用户交互。
4.它加载网页,创建文档模型,根据需要应用样式,并在页面上运行JavaScript。
5.它提供对当前页面的文档模型的访问,并允许Java应用程序和页面的JavaScript代码之间的双向通信。
6.它包装了一个WebPage对象,该对象提供与本机Webkit核心的交互。主要代码介绍:
主界面构造:
package org.lc.v1;
import org.lc.v1.component.WebBrowerPane;
import org.lc.v1.handle.AlertEventHandler;
import org.lc.v1.handle.PopupCallback;
import org.lc.v1.html.HtmlChangeListener;
import org.lc.v1.html.WebHistoryVisitListener;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebHistory;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class LCWebBrower extends Application {public void start(Stage stage) throws Exception { final WebBrowerPane tp = new WebBrowerPane(stage);
stage.setScene(new Scene(tp, 950, 600));
final WebView webView = new WebView();
webView.prefWidthProperty().bind(stage.getScene().widthProperty());
webView.prefHeightProperty().bind(stage.getScene().heightProperty());
final WebEngine webEngine = webView.getEngine();
final WebHistory history = webEngine.getHistory();
history.getEntries().addListener(new WebHistoryVisitListener());
webEngine.getLoadWorker().stateProperty().addListener(new HtmlChangeListener(webEngine));
webEngine.setOnAlert(new AlertEventHandler(tp));
webEngine.setCreatePopupHandler(new PopupCallback(tp));
webEngine.setJavaScriptEnabled(true);
webEngine.executeScript("location.reload(true);");
webEngine.load("加载的地址");
final Tab tab = new Tab();
tab.textProperty().bind(webEngine.titleProperty());
tab.setClosable(false);
tab.setContent(webView);
tp.addTabPage(tab);
stage.show();
}public static void main(String[] args) {
launch(args);
}
}
监听也没加载状态,获取源码、所有连接等。
package org.lc.v1.html;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker.State;
import javafx.scene.web.WebEngine;
public class HtmlChangeListener implements ChangeListener {
private WebEngine webEngine;
String html;
public HtmlChangeListener(WebEngine webEngine) {
this.webEngine = webEngine;
}
public void changed(ObservableValue extends State> observable, State oldValue, State newState) {
if (newState == State.SUCCEEDED) {
html = (String) webEngine.executeScript("document.documentElement.outerHTML");
System.out.print("succeeded");
NodeList elementBody = webEngine.getDocument().getElementsByTagName("a");
for (int i = 0; i < elementBody.getLength(); i++) {
Node aTag = elementBody.item(i);
String title = "";
if (aTag != null) {
title = aTag.getTextContent();
}
NamedNodeMap attributes = aTag.getAttributes();
String href = "";
if (attributes != null) {
Node hrefObject = attributes.getNamedItem("href");
if (hrefObject != null)
href = hrefObject.getTextContent();
}
System.out.println(title + " " + href);
}
}
}
} 到此,相信大家对"JavaFX WebView的采集开发方法是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
应用
应用程序
程序
支持
方法
内容
功能
浏览
浏览器
开发
对象
运行
页面
嵌入式
引擎
组件
网页
人员
代码
历史
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术是怎么改变世界的
新华社产经数据库
数据库为什么要采用三级模式结构
服务器起什么作用
服务器怎么u盘启动
吉首市国家网络安全宣传
临淄租房软件开发
abaqus软件开发实验室
广东什么是网络技术分类资费
进口多串口服务器
怎样远程linux服务器
刷新服务器管理器失败
中安网络技术股份有限公司
青浦区网络技术服务质量保证
软件开发 工具环境准备
数据库的压缩与修复的作用是
金融和科技互联网哪个更好
诺维尔科技互联网
外国人能玩lol服务器吗
数据库连接池初始化方法
我国网络安全优化大师下载
怎么在数据库中查看变量的值
汕尾自主可控软件开发零售价
添加cs1.6服务器
c 添加数据库
天津网络安全监察总队
弱电机房服务器网线接到哪里去了
于我国网络安全的新常态
速去拼互联网科技
软件数据库基础知识