当前位置: 首页 > 知识库问答 >
问题:

如何使用J汤从每个div中获取第一个href标签

邴兴为
2023-03-14

我使用Jsoup的elements类来获取

爪哇代码

String response =  ; // html code
Document document = Jsoup.parse(response);
if (document != null) {
 Elements links = document.select("div.kCrYT > a[href]"); // gets all the URL's
 for (Element link : links) {
   String linkHref = link.attr("href");
   System.out.println("linkHref: " + linkHref);
 }

HTML代码

<div>
    <div class="ZINbbc xpd O9g5cc uUPGi">
        <div class="kCrYT">
            <a href="/url?q=https://en.wikipedia.org/wiki/Mobile_phone&amp;sa=U&amp;ved=2ahUKEwjvy9fH9unoAhWLmOAKHZMGCYcQFjAaegQIARAB&amp;usg=AOvVaw3g3Lc1rBf-L5ZlWeE9ggx7">
                <div class="BNeawe vvjwJb AP7Wnd">
                    Mobile phone - Wikipedia
                </div>
                <div class="BNeawe UPmit AP7Wnd">
                    https://en.wikipedia.org › wiki › Mobile_phone
                </div>
            </a>
        </div>
        <div class="x54gtf"></div>
        <div class="kCrYT">
            <div>
                <div class="BNeawe s3v9rd AP7Wnd">
                    <div>
                        <div>
                            <div class="BNeawe s3v9rd AP7Wnd">
                                A mobile phone, cellular phone, cell phone, cellphone or hand phone, sometimes shortened to simply mobile, cell or just phone, is a portable telephone that can&nbsp;...
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<div>
    <div class="ZINbbc xpd O9g5cc uUPGi">
        <div class="kCrYT">
            <a href="/url?q=https://www.digitaltrends.com/mobile/&amp;sa=U&amp;ved=2ahUKEwjvy9fH9unoAhWLmOAKHZMGCYcQtwIwG3oECAIQAQ&amp;usg=AOvVaw0SEels_2PKSQyaFaMbZQpT">
                <div class="BNeawe vvjwJb AP7Wnd">
                    Mobile Phone and App News / Reviews | iOS, Android, and More ...
                </div>
                <div class="BNeawe UPmit AP7Wnd">
                    https://www.digitaltrends.com › mobile
                </div>
            </a>
        </div>
        <div class="x54gtf"></div>
        <div class="kCrYT">
            <a href="/url?q=https://www.digitaltrends.com/mobile/&amp;sa=U&amp;ved=2ahUKEwjvy9fH9unoAhWLmOAKHZMGCYcQuAIwG3oECAIQAg&amp;usg=AOvVaw1NrWt0iIdzg2X2zgb-h8Vq">
                <div class="lcJF1d SXn0g GXKcHe p1CInd">
                    <img class="EYOsld" style="display:block;max-width:120px;max-height:90px" alt="Video for mobile" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" id="dimg_1" data-deferred="1" />
                    <div class="qW7zYd HMoqlc"></div>
                    <div class="qW7zYd X8r0X" style="background-size:36px"></div>
                </div>
            </a>
            <div>
                <div class="BNeawe s3v9rd AP7Wnd">
                    <div>
                        <div>
                            <div class="BNeawe s3v9rd AP7Wnd">
                                <span class="r0bn4c rQMQod">3 days ago</span>
                                <span class="r0bn4c rQMQod"> &middot; </span>News, reviews, and discussion regarding Android, iOS, and everything else in the mobile realm ...Posted: 3 days ago
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="rl7ilb"></div>
        </div>
    </div>
</div>

共有1个答案

龚弘业
2023-03-14

假设你的

document.select("div.kCrYT > a:first-child[href]")

如果不能保证这一点,可以使用第一个伪选择器来获得等效效果:

document.select("div.kCrYT > a:first-of-type[href]")

以上解决方案的更多细节,以防对其他人有所帮助(我知道它对OP不起作用,正如他们评论中提到的)。

我使用的jSoup版本是1.13.1:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.13.1</version>
</dependency>

代码:

private void getDivs() {
    String response = testHtml; // the sample html code
    Document document = Jsoup.parse(response);
    if (document != null) {
        // this works:
        Elements links = document.select("div.kCrYT > a:first-child[href]"); 
        // this also works:
        //Elements links = document.select("div.kCrYT > a:first-of-type[href]");
        for (Element link : links) {
            String linkHref = link.attr("href");
            System.out.println("linkHref: " + linkHref);
        }
    }
}

 类似资料:
  • 我正在使用Jsoup HTML解析器从HTML页面提取内容。 我想提取的内容(68.00),我尝试以下: 这不起作用,因为类“oPrice”在页面中出现了44次,字符串“priceString”包含44种不同的价格。 谢谢你的帮助。

  • 问题内容: 我必须将HTML中的所有文本元素提取到Java字符串中。但是在单独的字符串中。 我有以下代码: 我用: 但是与此同时,我提取了“ hide-for-small”类中的所有Strings。所以我得到的答案是:2. Spieltag | sa。,26.07.2014 | 17:45 Uhr 2. Spieltag 26.07.2014 17:45 Uhr Letzigrund | 4200

  • 我的代码返回网页上的所有链接,但当我在谷歌上搜索某些东西时,例如“android”,我想获取第一个链接。我该怎么做? 这是我的代码

  • 我有一个带有div标签的页面源,如下面的示例页面源。我想像下面的例子一样刮掉所有的网址,并将它们保存在列表中。 示例url: 来自: 我尝试使用下面的代码从href中刮取网址。我试图使用span类来过滤只包含作业卡search__easy飞机的div标签。代码不返回任何网址,只是一个空列表。我对美丽的汤和硒不熟悉。如果有人能指出我的问题是什么,并提出一个解决方案,我会很高兴。特别是如果你也能给出一

  • 我正在尝试使用漂亮的汤解析网页(这是我有生以来第一次),我遇到了一个奇怪的错误。html结构中的标记中有一个标记,我一直收到错误 html标签的结构如下:页面上项目的整个网格都在div类"properties_reviews"中,然后进入div类"preview"中,用于特定项目,该类"preview"还有两个类:照片的"preview-media"和我需要解析的文本信息的"preview-con

  • 我在试着把这篇课文放在跨度内 使用下面的代码。但是,输出的行为就好像嵌套跨距不存在一样 我的输出是