注意,如果它是单一的元素,我可以提取,但我需要将它们全部提取在一起.

嗨,我正在try 从一个页面的项目列表中提取文本和链接,使用的是Selify和Java.我能够提取所有的链接文本,但面临着问题,以找出链接文本.Html代码如下所示:

<div class="col-12">
        <a href="/category/agricultural-products-service">
                <img src="/assets/images/icon/1.jpg" alt="icon" class="img-fluid category_icon">
                    <h5 class="category_title">Agricultural </h5>
        </a>
 </div>
<div class="col-12">
        <a href="/category/products-service">
                <img src="/assets/images/icon/7.jpg" alt="icon" class="img-fluid category_icon">
                    <h5 class="category_title">Products</h5>
        </a>
 </div>

使用h5,我可以提取所有元素,但需要提取这些元素的所有href

推荐答案

To extract text or link or any other attribute value from several web elements you need to collect all these elements in a list and then to iterate over the list extracting the desired value from each web element object.
As following:

List<WebElement> elements = driver.findElements(By.tagName("h5"));
for(WebElement element : elements){
    String value = element.getText();
    System.out.println(value);
}

这将为您提供所有的链接

List<WebElement> links = driver.findElements(By.cssSelector(".top_cat a"));
for(WebElement link : links){
    String value = link.getAttribute("href");
    System.out.println(value);
}

On this specific page the structure is:
There are several blocks defined by class="col-12 col-sm-6 col-md-4 border all_cat" elements. Inside each such block several links and titles. Each a is below the class="col-12 col-sm-6 col-md-4 border all_cat" element and the title is below it a element. So, extracting the links and titles here can be done as following:

List<WebElement> blocks = driver.findElements(By.cssSelector(".all_cat"));
for(WebElement block : blocks){
    List<WebElement> links = block.findElements(By.xpath(".//a"));
    for(WebElement link : links){
        String linkValue = link.getAttribute("href");
        System.out.println("The link is " + linkValue);
        WebElement title = block.findElements(By.xpath(".//h5"));
        String titleValue = title.getText();
        System.out.println("The title is " + titleValue);
    }
}

Java相关问答推荐

我们如何直接使用kerminldap服务票证来通过ldap进行身份验证并形成LDAP上下文

如何用javac编译Java类,即使对像java.lang.*这样的基本类也没有任何依赖关系?

转换为Biggram

弹簧靴和龙目岛

RESTful框架类字段是安全的还是不安全的

Java 21 struct 化连接货币,需要可预知的子任务异常排序

我无法获取我的Java Spring应用程序的Logback跟踪日志(log)输出

对Java中的通配符参数的混淆

JavaFX如何在MeshView中修复多个立方体?

带错误BER验证的itext8签名返回pdf

Java构造函数分支

JNI:将代码打包成自包含的二进制文件

深度优先搜索实现:算法只向右搜索

在应用getCellFormula()时,Excel引用中的文件名始终为";[1]";使用Apache POI()

如何对存储为字符串的大数字数组进行排序?

如何设计包含已知和未知键值对映射的Java类?

如何在右击时 Select 新行?

在JSON上获取反斜杠

";重复键的值提示唯一约束«;livre_genre_pkey»";例外

在不带instanceof或switch的java中记录模式