JavaFXWebView的采集開發(fā)方法是什么

本篇內(nèi)容主要講解“JavaFX WebView的采集開發(fā)方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“JavaFX WebView的采集開發(fā)方法是什么”吧!

成都創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的南山網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

背景

最近想做一個桌面版的客戶端,能夠加載連接,獲取源碼等,主要用于快速的獲取網(wǎng)站的欄目,便與爬蟲該欄目下的最新信息。

采用技術(shù)

java 1.8

相關(guān)插件介紹

JavaFX是:

?用于創(chuàng)建和交付桌面應(yīng)用程序的軟件平臺,以及可以在各種設(shè)備上運行的富Internet應(yīng)用程序(RIA)。
?一組圖形和媒體包,使開發(fā)人員能夠設(shè)計,創(chuàng)建,測試,調(diào)試和部署在不同平臺上一致運行的富客戶端應(yīng)用程序。

WebView:

使用WebKit HTML技術(shù)的Web組件,可以在JavaFX應(yīng)用程序中嵌入Web頁面。在WebView中運行的JavaScript可以調(diào)用Java API,Java API可以調(diào)用在WebView中運行的JavaScript。
JavaFX中添加了對其他HTML5功能的支持,包括Web套接字,Web Worker和Web字體以及打印功能。

JavaFX WebView:

?JavaFX WebView  是一種迷你瀏覽器(也稱為嵌入式瀏覽器),它通過JavaFX  應(yīng)用程序中的API提供Web查看器和完整瀏覽功能  。
?此瀏覽器基于  WebKit,這是一個支持HTML5,JavaScript,CSS,DOM渲染和SVG圖形的開源Web瀏覽器引擎。
?WebView類是Node類的擴(kuò)展。
?嵌入式瀏覽器從Node類繼承所有字段和方法,因此它具有其所有功能。
?它封裝了WebEngine對象,將HTML內(nèi)容合并到應(yīng)用程序的場景中,并提供應(yīng)用效果和轉(zhuǎn)換的屬性和方法。
?在WebView對象上調(diào)用的getEngine()方法返回與之關(guān)聯(lián)的Web引擎。
?構(gòu)成嵌入式瀏覽器的類位于javafx.scene.web包中。

?WebView 使開發(fā)人員能夠在其Java應(yīng)用程序中實現(xiàn)以下功能:

?從本地或遠(yuǎn)程URL呈現(xiàn)HTML內(nèi)容
?支持歷史記錄并提供后退和前進(jìn)導(dǎo)航
?重新加載內(nèi)容
?將效果應(yīng)用于Web組件
?編輯HTML內(nèi)容
?執(zhí)行JavaScript命令
?執(zhí)行從JavaScript到JavaFX的上行調(diào)用
?處理事件

? 除了支持CSS3和ecmascript6(ES6)之外,WebView組件還支持以下HTML5功能:

?DOM3
?畫布
?媒體播放
?表單控件(<input type =“color”>除外)
?可編輯的內(nèi)容
?歷史維護(hù)
?支持<meter>,<progress>,<details>和<summary>標(biāo)簽
?SVG
?Web套接字
?Web Worker
?支持使用本國語言編寫的域名

Web引擎:

1.是一個能夠一次管理一個網(wǎng)頁的非可視對象
2.通過其API提供基本網(wǎng)頁功能。
3.它支持用戶交互,例如導(dǎo)航鏈接和提交HTML表單,但它不直接與用戶交互。
4.它加載網(wǎng)頁,創(chuàng)建文檔模型,根據(jù)需要應(yīng)用樣式,并在頁面上運行JavaScript。
5.它提供對當(dāng)前頁面的文檔模型的訪問,并允許Java應(yīng)用程序和頁面的JavaScript代碼之間的雙向通信。
6.它包裝了一個WebPage對象,該對象提供與本機(jī)Webkit核心的交互。

主要代碼介紹:

主界面構(gòu)造:
        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);
}
}

監(jiān)聽也沒加載狀態(tài),獲取源碼、所有連接等。

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<State> {
    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的采集開發(fā)方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享題目:JavaFXWebView的采集開發(fā)方法是什么
轉(zhuǎn)載源于:http://muchs.cn/article32/gpposc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、定制網(wǎng)站、虛擬主機(jī)、企業(yè)建站、網(wǎng)站營銷、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化