1

我希望你能帮我解决这个问题……
首先,一些 HTML 代码……

<div style="font-size:12px; FONT-FAMILY: VERDANA, ARIAL; font-weight:bold; position: absolute; background-color:#FFFFFF; border-color:#868686; border-style:solid; border-left-width:1px; border-top-width:1px; border-right-width:0px; border-bottom-width:0px; top: 0px; left:2px; width:55px;height:30px; padding-left : 0 px;padding-top : 5px;"><img src="../../server/img/spacer.gif" alt="" width="10" height="1">Zeit</div>
<div style="font-size:12px; FONT-FAMILY: Tahoma, VERDANA, ARIAL; font-weight:bold; position: absolute; top: 0px; background-color:#FFFFFF; border-color:#868686; border-style:solid; border-left-width:1px; border-top-width:1px; border-bottom-width:0px;border-right-width:1px;left:57px;width:140px;height:30px; padding-left:0px; padding-top:5px;"><img src="../../server/img/spacer.gif" alt="" width="10" height="1">Montag</div>
<div style="font-size:12px; FONT-FAMILY: Tahoma, VERDANA, ARIAL; font-weight:bold; position: absolute; top: 0px; background-color:#FFFFFF; border-color:#868686; border-style:solid; border-left-width:1px; border-top-width:1px; border-bottom-width:0px;border-right-width:1px;left:197px;width:140px;height:30px; padding-left:0px; padding-top:5px;"><img src="../../server/img/spacer.gif" alt="" width="10" height="1">Dienstag</div>
<div style="font-size:12px; FONT-FAMILY: Tahoma, VERDANA, ARIAL; font-weight:bold; position: absolute; top: 0px; background-color:#FFFFFF; border-color:#868686; border-style:solid; border-left-width:1px; border-top-width:1px; border-bottom-width:0px;border-right-width:1px;left:337px;width:140px;height:30px; padding-left:0px; padding-top:5px;"><img src="../../server/img/spacer.gif" alt="" width="10" height="1">Mittwoch</div>
<div style="font-size:12px; FONT-FAMILY: Tahoma, VERDANA, ARIAL; font-weight:bold; position: absolute; top: 0px; background-color:#FFFFFF; border-color:#868686; border-style:solid; border-left-width:1px; border-top-width:1px; border-bottom-width:0px;border-right-width:1px;left:477px;width:140px;height:30px; padding-left:0px; padding-top:5px;"><img src="../../server/img/spacer.gif" alt="" width="10" height="1">Donnerstag</div>
<div style="font-size:12px; FONT-FAMILY: Tahoma, VERDANA, ARIAL; font-weight:bold; position: absolute; top: 0px; background-color:#FFFFFF; border-color:#868686; border-style:solid; border-left-width:1px; border-top-width:1px; border-bottom-width:0px;border-right-width:1px;left:617px;width:140px;height:30px; padding-left:0px; padding-top:5px;"><img src="../../server/img/spacer.gif" alt="" width="10" height="1">Freitag</div>

我的第一个问题是查看“Montag”(=Monday)这一天在哪里......直到现在我得到了这个:

Element content = doc.getElementById("content");
Elements names = doc.select("div[style]");
for(Element elem : names){
    if(elem.text().contains("Montag")){ 
      }
}  

你觉得这样行吗?
在此之后,(在 if 语句中)我必须注意样式内联属性:“left:[xx]px”。
那么我如何才能实现以下输出?:

Montag -> Left:57px

我希望能得到你的帮助!非常感谢您花时间回答我。

4

1 回答 1

2

您绝对可以按照您的方式使用 Jsoup 来找到正确的元素。

要获取属性信息,仅使用 Jsoup 没有简单的方法。您可以通过调用Element.attributes()Jsoup 中的方法来获取属性,但据我所知,您必须使用正则表达式匹配器来选择所需的信息。

您可以设置正则表达式前瞻和后瞻模式,以检查与您的模式匹配的出现。

Pattern p = Pattern.compile("(?<=border-right-width:1px;)(.*)(?=;width:140px;)");

此模式将查找介于border-right-width:1px;和之间的所有字符;width:140px;

从这里开始,下面的代码应该会产生您想要的结果:

Pattern p = Pattern.compile("(?<=border-right-width:1px;)(.*)(?=;width:140px;)");
String elementInformation = "";
for (Element elem : names) {
    if (elem.text().contains("Montag")) {
        Matcher m = p.matcher(elem.attributes().toString());
        elementInformation = elem.text() + " -> ";
        while(m.find()){
            elementInformation += m.group();
        }
    }
}
System.out.println(elementInformation);

结果:

Montag -> left:57px

您可以修改 for each 循环并为所有元素解析相同的信息,尽管它

for (Element elem : names) {
    if (!elem.text().contains("Zeit")) {
        Matcher m = p.matcher(elem.attributes().toString());
        elementInformation += "\n";
        elementInformation += elem.text() + " -> ";
        while (m.find()) {
            elementInformation += m.group();

        }
    }
}

你会得到:

Montag -> left:57px
Dienstag -> left:197px
Mittwoch -> left:337px
Donnerstag -> left:477px
Freitag -> left:617px

如果您想了解它的工作原理,请查看此 Regex 教程。

正则表达式教程

于 2013-11-13T12:33:13.453 回答