微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用JSOUP获得第一个链接?

如何解决如何使用JSOUP获得第一个链接?

我想使用Jsoup提取google搜索结果上的第一个链接。例如,我在Google上搜索“苹果”。我看到的第一个链接www.apple.com/。如何返回第一个链接?我目前能够使用Jsoup提取所有链接

       new Thread(new Runnable() {
        @Override
        public void run() {
            final StringBuilder stringBuilder = new StringBuilder();
            try {
                Document doc = Jsoup.connect(sharedURL).get();
                String title = doc.title();
                Elements links = doc.select("a[href]");
                stringBuilder.append(title).append("\n");
                for (Element link : links) {
                    stringBuilder.append("\n").append(" ").append(link.text()).append(" ").append(link.attr("href")).append("\n");
                }
            } catch (IOException e) {
                stringBuilder.append("Error : ").append(e.getMessage()).append("\n");
            }
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // set text
                    textView.setText(stringBuilder.toString());
                }
            });
        }
    }).start();

解决方法

您的意思是:

Element firstLink = doc.select("a[href]").first();

对我有用。如果您有其他意思,请告诉我们。我检查了以下搜索结果,并对其进行了艰难的解读,因为返回的结果类型非常多:地图,新闻,广告等。

我使用Java lambdas整理了一些代码:

public static void main(String[] args) {
        new Thread(() -> {
            final StringBuilder stringBuilder = new StringBuilder();
            try {
                String sharedUrl = "https://www.google.com/search?q=apple";
                Document doc = Jsoup.connect(sharedUrl).get();
                String title = doc.title();
                Elements links = doc.select("a[href]");
                Element firstLink = links.first();  // <<<<< NEW ADDITION
                stringBuilder.append(title).append("\n");
                for (Element link : links) {
                    stringBuilder.append("\n")
                            .append(" ")
                            .append(link.text())
                            .append(" ")
                            .append(link.attr("href"))
                            .append("\n");
                }
            } catch (IOException e) {
                stringBuilder.append("Error : ").append(e.getMessage()).append("\n");
            }
            // replaced some of this for running/testing locally
            SwingUtilities.invokeLater(() -> System.out.println(stringBuilder.toString()));
        }).start();
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。