当前位置: 首页 > 面试题库 >

Java GUI显示网页并返回HTML

段干楚青
2023-03-14
问题内容

我需要如下工作流程:

// load xyz.com in the browser window
// the browser is live, meaning users can interact with it
browser.load("http://www.google.com");

// return the HTML of the initially loaded page
String page = browser.getHTML();

// after some time
// user might have navigated to a new page, get HTML again
String newpage = browser.getHTML();

令我惊讶的是,这与Java GUI(例如JavaFX(http://lexandera.com/2009/01/extracting-html-from-
a-webview/
))和Swing 有多么困难。

有一些简单的方法可以在Java中获得此功能吗?


问题答案:

这是一个使用JavaFX的人为示例,该示例将html内容打印到System.out
-适应创建getHtml()方法应该不会太复杂。(我已经用JavaFX 8对其进行了测试,但是它也应该可以与JavaFX 2一起使用)。

每次加载新页面时,该代码都会打印HTML内容。

注意:我已printDocument从此答案中借用了代码。

public class TestFX extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        try {
            final WebView webView = new WebView();
            final WebEngine webEngine = webView.getEngine();

            Scene scene = new Scene(webView);

            stage.setScene(scene);
            stage.setWidth(1200);
            stage.setHeight(600);
            stage.show();

            webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
                @Override
                public void changed(ObservableValue<? extends State> ov, State t, State t1) {
                    if (t1 == Worker.State.SUCCEEDED) {
                        try {
                            printDocument(webEngine.getDocument(), System.out);
                        } catch (Exception e) { e.printStackTrace(); }
                    }
                }
            });

            webView.getEngine().load("http://www.google.com");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void printDocument(Document doc, OutputStream out) throws IOException, TransformerException {
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
        transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(out, "UTF-8")));
    }

    public static void main(String[] args) {
        launch(args);
    }
}


 类似资料:
  • 本文向大家介绍Django使用HttpResponse返回图片并显示的方法,包括了Django使用HttpResponse返回图片并显示的方法的使用技巧和注意事项,需要的朋友参考一下 做了一个关于Django的小案例,想要在网页中显示图片,直接在img标签的src属性写图片的路径是不能显示的,查询资料发现在Django中使用图片这类的资源相当繁琐需要进行一定D的配置,摸索了一会没有整明白,想到了写

  • 我通过使用硒IDE创建了一个提示: 如何返回这段代码并在IDE中进一步使用它?例如将其写入特定的输入字段。 我只是希望代码等到它从提示中接收到返回值,然后使用该值将其插入到特定字段。

  • 我和我的几个伙伴正在进行国际足联联赛。我有一个服务器可以上传排行榜。现在我正在使用一个电子表格和公式来计算积分和目标差。非常简单的东西,但我不必改变一切,我只需要改变赢球、平局、输球和进球、失球。问题是,很多人用手机参与我们的在线聊天,而不能在手机上查看电子表格。 所以我要找的帮助是,我知道我可以创建一个html表,但是有没有我可以在其中包含公式的东西?

  • 我有一个关于显示void类型的返回值的问题。因此trimLines是一个void类型的方法。我不明白如何显示void类型的方法,因为该方法没有返回任何东西,所以没有任何东西可以显示。由于采用字符串类型,这将导致错误。

  • 我试图找到一个网页上的所有超链接,链接文本也在列表中,页脚名称。我想点击链接,等待(稍后会放入验证检查),导航回来,然后点击allLinksHrefs列表中的下一个链接(其中应该包含所有必要的网页链接元素)。目前,我能够找到第一个链接,单击它,导航回来,但随后测试失败。我使用硒WebDriver与C#。提前感谢。

  • 我必须将折扣片段和编辑服务活动上显示的服务片段分割开来。当我返回到编辑服务片段时,折扣片段上显示的后退箭头箭头消失。我想显示它以从编辑服务活动导航到上一个活动。 活动布局............................................................... 活动代码...............................................