JavaFX WebView的采集开发方法是什么
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本篇内容主要讲解"JavaFX WebView的采集开发方法是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"JavaFX WebView的采集开发方法
千家信息网最后更新 2025年02月04日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安全错误
数据库的锁怎样保障安全
神魔大陆几个服务器
软件开发培训班不要学费包分配
复旦网络安全杨珉
网络安全微课作品海报
4月29日 网络安全
软件开发专业群
excel人才数据库
软件开发疑难问题
软件开发岗位银行2019
山东交友软件开发价位
java 连接数据库名称
青岛管理软件开发产品
学习网络安全工程师好不好学
深圳市福斯泰网络技术
普法课堂网络安全法
徐州建设智慧学校软件开发
神武4手游找不到服务器
银行网络安全转培训总结
网络安全与维护的论文
java项目连同数据库打包
restful服务器搭建
登封市数据库项目
计算机数据库程序设计考试
人事档案管理系统服务器版
郑州栩墨网络技术有限公司
青岛朗信网络技术有限公司
安装网络安全稿件
杭州欧众互联网科技有限公司
dnf服务器不同号邮件能收到吗
我国的网络安全事故