首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从flex容器中提取文本?

如何从flex容器中提取文本?
EN

Stack Overflow用户
提问于 2022-05-20 10:00:19
回答 1查看 49关注 0票数 2

我是Java的初学者,我正在尝试从一个网站中提取一些文本。但是,文本位于两个标记之间,当我使用getByXPath提取文本时,除了我需要的文本之外,我得到了所有东西。

这是我正在浏览的网站的布局:网站HTML布局

这两个突出显示的部分是我真正需要的文本片段。

这就是我目前掌握的密码:

代码语言:javascript
运行
复制
List<HtmlElement> name = (List<HtmlElement>) page.getByXPath("//ul/li/a[@class='title']");
List<HtmlElement> subText = (List<HtmlElement>) page.getByXPath("//ul/li/p[@data-af=' (Secret)']");

然而,这就产生了两个清单:

名称-其中包含HtmlAnchor对象

代码语言:javascript
运行
复制
[HtmlAnchor[<a class="title" data-af="10" href="/a180775/daddys-home-achievement">], HtmlAnchor[<a class="title" data-af="11" href="/a180776/protector-achievement">], HtmlAnchor[<a class="title" data-af="12" href="/a180777/sinclairs-solution-achievement">]]

subText --其中包含HtmlParagraph对象。

代码语言:javascript
运行
复制
[HtmlParagraph[<p data-af=" (Secret)">], HtmlParagraph[<p data-af=" (Secret)">], HtmlParagraph[<p data-af=" (Secret)">], HtmlParagraph[<p data-af=" (Secret)">]]

如果您想查看整个网站:https://truesteamachievements.com/game/BioShock-2-Remastered/achievements

我需要这些清单看起来像这样:

代码语言:javascript
运行
复制
["Daddy's Home", "Protector", "Sinclair's Solution"]
["Found your way back to the ruins of Rapture.", "Defended yourself against Lamb's assault in the train station.", "Joined forces with Sinclair in Ryan Amusements."]

这是我使用的Html库:https://htmlunit.sourceforge.io/apidocs/overview-summary.html

感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-20 11:05:50

最简单的方法是使用Stream:

代码语言:javascript
运行
复制
        List<HTMLElement> htmlElementList = new ArrayList<>();//get your list in needed way
        List<String> listOfTitles = htmlElementList.stream()
                .map(HTMLElement::getTitle)
                .toList();

更多理解,使用foreach循环:

代码语言:javascript
运行
复制
        List<HTMLElement> htmlElementList = new ArrayList<>();
        List<String> listOfTitles = new ArrayList<>();
        for (HTMLElement htmlElement:
             htmlElementList) {
            listOfTitles.add(htmlElement.getTitle());
        }

不清楚-用于接收元素的库。如果您使用org.w3c.dom库来定义HtmlElement,这就是一个例子。否则-使用适当的文本接收方法(getTitle()除外),例如getText() -用于selenium WebElement,等等.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72317015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档