java - 获取要在 jSoup 中使用的字符串的某些表引用

标签 java jsoup

我想使用jSoup从该网页获取时间...我需要的时间是顶部附近红色栏中的“11:19”... http://www.gbgb.org.uk/resultsRace.aspx?raceID=293047-2

有人知道我如何使用 jSoup 从网页获取这个吗?如果有人对将来如何在表格中定位元素有任何建议,请告诉我。

另外,我需要从此表中获取“查看比赛”链接地址:http://www.gbgb.org.uk/raceCard.aspx?dogName=Ballymac%20Monleek ,但是当我当前获取该元素时,它只是给我“查看比赛”而不是实际的链接......

 //getHistory
    String dogPage = "http://www.gbgb.org.uk/raceCard.aspx?dogName=" + selectedDog;
    Document doc1 = Jsoup.connect(dogPage).get();

    Element tblHeader = doc1.select("table.MasterTable_Web20 tbody").first();
    List<DogDetail> data = new ArrayList<>();
    for (Element element1 : tblHeader.children()){

        String webURL = (element1.select("td:eq(14)").text());
        System.out.println(webURL);
    }

谢谢

最佳答案

这是一种非常快速的方法(可能不是最好的,但它有效,我刚刚测试过)。

使用 Chrome,可以非常轻松地获取网页中每个元素的 XPath 表达式(右键单击文本,“检查”,复制 XPath 表达式)。在本例中,它是:

 //*[@id="content"]/table[2]/tbody/tr[2]/td/table/tbody/tr/td[2]/table[1]/tbody/tr/td[4]

现在,如果页面结构永远不会改变,那就足够了。使用Xsoup extension将 XPath 表达式与 Jsoup 一起使用:

        Document document = Jsoup.connect("http://www.gbgb.org.uk/resultsRace.aspx?raceID=293047-2").get(); 
        XElements element = Xsoup.compile("//*[@id=\"content\"]/table[2]/tbody/tr[2]/td/table/tbody/tr/td[2]/table[1]/tbody/tr/td[4]").evaluate(document);

        // Get text content
        String textContent = element.getElements().get(0).childNode(0).toString();

        // Extract time portion
        String time = textContent.trim().replaceAll("\\&nbsp\\;", " ").split("\\s+")[1];

        // Prints 11:19
        System.out.println(time);

当然,请注意,这对页面结构 future 可能发生的变化非常敏感。

对于问题的第二部分,您将获得这组 xpath

*[@id="ContentPlaceHolder1_RadGrid1_ctl00__0"]/td[15]/a
*[@id="ContentPlaceHolder1_RadGrid1_ctl00__1"]/td[15]/a
*[@id="ContentPlaceHolder1_RadGrid1_ctl00__2"]/td[15]/a
...
*[@id="ContentPlaceHolder1_RadGrid1_ctl00__15"]/td[15]/a

简单的迭代就可以轻松获得所有这些。

关于java - 获取要在 jSoup 中使用的字符串的某些表引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641888/

相关文章:

android - 如何在android中使用html代码打开本地存储的图像?

java - Jsoup:从 anchor 标记中提取内部文本

java - 如何在运行时实现参数化接口(interface)?

java - cmd错误: Could not find or load main class

java - 将映射键从集合转换为 double - java

java - 如何使用选择器语法 Jsoup 通过 ID 的子字符串查找元素?

java - IntelliJ 检查给出 "Cannot resolve symbol"但仍编译代码

java - 如何将 Alertdialog 添加到我的 Android 应用程序?

Java - 以编程方式获取与域名关联的每个网页

java - Jsoup 选择并替换多个 <a> 元素