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

如何获得文本从嵌套跨度使用J汤?

梁丘凯定
2023-03-14

我在试着把这篇课文放在跨度内

使用下面的代码。但是,输出的行为就好像嵌套跨距不存在一样

            Elements tags = document.select("div[id=tags]"); 

            for (Element tag:tags){


                Elements child_tags = tag.getElementsByTag("class");  

                String key = tag.html();
                System.out.println(key); //only as a test

                for (Element child_tag:child_tags){
                    System.out.println("\t" + child_tag.text());

                }

我的输出是

      <hr />Tags: 
      <span id="category"></span> 
      <span id="voteSelector" class="initially_hidden"> <br /> </span>      

共有2个答案

寇和璧
2023-03-14
Elements child_tags = tag.getElementsByTag("class");

通过这一行,您试图获得一个带有标记类的元素,即

Elements child_tags = tag.getElementsByClass("tag");

通过class=tag的属性值获取元素,或者:

Elements child_tags = tag.getElementsByTag("span"); 

通过tag name=span获取元素。

葛承德
2023-03-14

现在,使用Jsoup,您将获得在浏览器中作为源代码呈现的任何数据,为了确认,您可以在浏览器中按CTRL U,这将打开一个新窗口,其中将显示Jsoup将获得的实际内容。现在来回答您的问题,您试图检索的部分不在浏览器源代码中,请按CTRL U检查。

如果内容是使用JAVASCRIPT呈现的,那么JSOUP将看不到这些内容,因此您必须使用运行JAVASCRIPT并向您提供详细信息的其他内容。

JSoup不运行Javascript,也不是浏览器。

编辑

使用硒有一个转变。以下是获取url的确切源代码以及您正在查找的所需数据的工作代码:

import java.io.IOException;
import java.io.PrintWriter;

import org.json.simple.parser.ParseException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class JsoupDummy {
 public static void main(String[] args) throws IOException, ParseException {
    System.setProperty("webdriver.gecko.driver", "D:\\thirdPartyApis\\geckodriver-v0.19.1-win32\\geckodriver.exe");
    WebDriver driver = new FirefoxDriver();

    try {
        driver.get("https://chesstempo.com/chess-problems/15");
        Document doc = Jsoup.parse(driver.getPageSource());
        Elements elements = doc.select("span.ct-active-tag");
        for (Element element:elements){
             System.out.println(element.html());
        }

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        /*write.flush();
        write.close();*/
        driver.quit();

    }
}
}

您需要selenium web驱动程序selenium web驱动程序,它模拟浏览器行为,并允许您呈现由脚本编写的html内容。

 类似资料:
  • 我正在使用jsoup HTML解析器,并试图进入span类并从中获取文本,但它什么也不返回,并且其大小始终为零。我粘贴了HTML源代码的一小部分。请帮我提取文本。 我尝试了以下代码: 如果你对我的内容不是很清楚,请问我。提前谢谢。

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

  • 我有一个这样的目标字符串:(然而嵌套在实践中可能非常深) 预期结果将是: 小组: 我在c#regex中找不到任何东西可以这样做嵌套捕获。有可能吗? 编辑: 我想我把我的例子简化得太多了,这使答案模糊不清。我需要以递归的方式捕获,因为我需要括号内的内容: 预期结果将是: 和

  • 我在springboot应用程序中使用了嵌入式Redis进行缓存。redis在应用程序启动时运行在localhost和默认上。 是否有一种方法来获取度量(内存使用、keyspace_hits、keyspace_misses,等等)对于嵌入式redis,来自应用程序外部的,可能是命令行或任何?

  • 使用JSI.999读取值。我的密码是 通过使用这个代码,我得到了价值(66%的折扣),请看一下这个代码。谢谢你。。