Jsoup无法解析查询

时间:2018-06-19 06:41:23

标签: java jsoup html-parsing

我将xpath转换为Jsoup 下面是我的xpath(在我的selenium webdriver中使用)

String number = driver.findElement(By.xpath("//span[@data-dojo-attach-point='subNumber']")).getText();

相当于jsoup

String number =  doc.select(" >span >data-dojo-attach-point=subNumber").text();
        System.out.println(number); 

执行低于错误时

Could not parse query 'data-dojo-attach-point=subNumber': unexpected token at '=subNumber'

HTML:

<div class="subHeaders">
            <div class="subHeaderItem">
                <h5 class="smallGray">Number</h5>
                <span data-dojo-attach-point="subNumber">94607506</span>
            </div>
</div>

任何人都可以帮助。

2 个答案:

答案 0 :(得分:0)

这是您使用selectFirst​(String cssQuery)然后html()检索该数据的方式:

识别TestClass:

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;


public class TestA {

    public static void main(String[] args) throws IOException {


        //this is where chromedriver.exe should be 
        String driverPath = "yourDriverPath";

        System.setProperty("webdriver.chrome.driver", driverPath); 

        WebDriver driver = new ChromeDriver(); ; 

        driver.get("YourURL"); 

        WebDriverWait wait = new WebDriverWait(driver, 15);

        String cssSelector = "span[data-dojo-attach-point=subNumber]";

        wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(cssSelector)));

        Document doc = Jsoup.connect("YourURL").get();

        Element subNumber = doc.selectFirst(cssSelector);

        System.out.println(subNumber.html());
    }
}

输出:

94607506

注意:我在我的笔记本电脑上尝试过以上操作,但它正在运行。

答案 1 :(得分:0)

使用此CSS选择器。

  div.subHeaders > div.subHeaderItem > span

  String number =  doc.select("div.subHeaders > div.subHeaderItem > span").text();

如果页面已加载,则将显示文本。使用“尝试Jsoup”来验证是否能够获取文本。

点击此link。单击“获取URL”,然后输入您要解析的页面的URL,然后单击“获取”。让我知道您是否能够获得价值。

如果您不介意在此处发布URL,请在此处发布URL。我们将为您提供帮助。