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

为元素属性中的文本值匹配从jsoup中提取元素

邓仲卿
2023-03-14

如何获取属性中具有特定文本的跨度?我正在尝试提取文本“星星”后面的数字。那么我怎么能选择一个包含文本“rating_sprite星”的 span 标签,并且我希望从属性中提取值“star5”,以便我可以从文本中获取 5。

目前我没有收到任何元素!

 String url = "https://www.morningstar.co.uk/uk/funds/snapshot/snapshot.aspx?id=F00000WYA1";
        Document doc = null;
        try {
            doc = Jsoup.connect(url).get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Elements spans = doc.select("span.rating_sprite");
        System.out.println(spans);

HTML代码段如下所示

<div class="snapshotTitleBox">
  <h1>Comgest</h1>
  <span class="rating_sprite stars5"></span>
  <span class="rating_sprite analyst-rating-5"></span>
  <div style="float:right; margin-top:6px;"></div>
</div>

共有1个答案

卫学真
2023-03-14

没有办法只使用j汤来做到这一点。但是您已经拥有了所有的span.rating_sprite元素,因此您可以遍历它们中的每一个,并找到一个类匹配正则表达式stars(\d)的元素。然后您可以捕获仅包含数字的第一组:

    Pattern p = Pattern.compile("stars(\\d)");
    for (Element span : spans) {
        for (String className : span.classNames()) {
            Matcher m = p.matcher(className);
            if (m.matches()) {
                System.out.println("stars: " + m.group(1));
            }
        }
    }
 类似资料:
  • 现在我想从中得到一个,它包含。 我已经试过了(并期望能奏效): 但这与任何内容都不匹配(包含null)。 (我不想更改XML语法。)

  • 问题 在解析获得一个Document实例对象,并查找到一些元素之后,你希望取得在这些元素中的数据。 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内容,可以使用Element.html(), 或Node.outerHtml()方法 示例: String html =

  • 问题内容: 我只想从汤中最上面的元素中提取文本;但是汤.text也会给出所有子元素的文本: 我有 输出为。我只想“是”。 实现此目标的最佳方法是什么? 编辑 :我也想在解析’ ‘时输出。 问题答案: 那又如何呢? 编辑: 我想我已经了解了你现在想要的。尝试这个:

  • 问题内容: 所以我有一个这样的HTML字符串: 使用XPath,我可以使用以下Xpath查询来获取href属性的值: 而且,获得文本值甚至更容易,如下所示: 现在,我很想知道,我如何才能将这两个查询组合在一起而只用一个查询来获得两个值(如果这甚至是可能的话?)。 问题答案: 取 然后使用选中文本,使用选中属性。 除此之外,您可以将Xpath查询与Union Operator结合使用,从而可以使用

  • 我是8Java的新手。我有一个A类对象的列表,其中A的结构如下: 现在我有了一个类A的元素L的列表,在这个列表中,我想用inactive=false更新一个名为name="test "的元素。 我可以通过编写for循环并创建一个新列表来非常轻松地做到这一点。 但是我如何使用Java8流API呢?

  • 问题内容: 使用Python中的ElementTree,如何从节点中提取所有文本,剥离该元素中的所有标签并仅保留文本? 例如,说我有以下内容: 我想回来。我该怎么做呢?到目前为止,我所采用的方法产生了相当灾难性的结果。 问题答案: 如果您在Python 3.2+下运行,则可以使用。 创建一个文本迭代器,该迭代器按文档顺序循环遍历此元素和所有子元素,并返回所有内部文本: 如果您在较低版本的Pytho