【问题标题】:How to get value (String) from String (html code)如何从字符串(html代码)中获取值(字符串)
【发布时间】:2019-09-16 13:29:13
【问题描述】:
 <span class="dane_anonsu_wyroznij">Wiek: </span> <span class="dane_anonsu_value">28 lat</span></li> <li><span class="dane_anonsu_wyroznij">Waga: </span> <span class="dane_anonsu_value">69 kg</span></li> 
    <li><span class="dane_anonsu_wyroznij">Wzrost: </span> <span class="dane_anonsu_value">170 cm</span></li>  
    <li><span class="dane_anonsu_wyroznij">Biust: </span> <span class="dane_anonsu_value">3   </span></li>   
    <li><span class="dane_anonsu_wyroznij">Języki: </span> <span class="dane_anonsu_value">   angielski,        </span></li>  
    <li> alt="Cennik:"/><span class="dane_anonsu_tytul">Cennik</span> </li> 
    <li><span class="dane_anonsu_fiolet dane_anonsu_wyroznij dane_anonsu_tytul">1 godz.:</span> <span class="dane_anonsu_fiolet dane_anonsu_tytul">***150 zł***</span></li>  
    <li><span class="dane_anonsu_wyroznij">15 min.:</span> <span class="dane_anonsu_value">***100*** zł </span></li>  
    <li><span class="dane_anonsu_wyroznij">30 min.:</span> <span class="dane_anonsu_value">***150 zł*** </span></li>  
    <li><span class="dane_anonsu_wyroznij">Całą noc:</span> <span class="dane_anonsu_value">***1200 zł*** </span></li>     
    <li><span class="dane_anonsu_tytul">Czas pracy:</span> </li>   
    <li><span class="dane_anonsu_wyroznij">pn. - pt.:</span> <span>od 8 do 22</span></li>    
    <li><span class="dane_anonsu_wyroznij">sobota:</span> <span>od 8 do 22</span></li>  
    <li><span class="dane_anonsu_wyroznij">niedziela:</span> <span>od 8 do 22</span></li>  </ul> 
    </div> <!--<div class="clear">&nbsp; </div> --> </div>  

这是页面代码,我必须取四个值,即价格,你知道吗?除了计算字符并使其成为子字符串

【问题讨论】:

  • 使用任意html解析器,可能是JSoup...
  • 不是每个人都熟悉兹罗提。通过使您的问题更易于阅读来帮助自己:正确格式化代码并准确指出要提取的字段,并在代码和问题中使用正确的名称
  • 除了 HTML 之外,您可以使用更多代码进行编辑吗?
  • 您也可以使用正则表达式,而不是使用任意的 html 解析器。它可能足以满足您的需求。
  • @Quaffel - 用正则表达式解析 HTML 不是我们想要教给新程序员的习惯。这是错误的做法,除非 HTML 完全在您自己的控制范围内,并且您知道它没有递归结构并且不可能更改。

标签: java http substring


【解决方案1】:

使用正则表达式是一种解决方案。这不是最好的解决方案。但这是您的选择。


    public static void main(String[] args) {
        String html = "class=\"dane_anonsu_wyroznij\">Wiek: </span> <span class=\"dane_anonsu_value\">28 lat</span></li> <li><span class=\"dane_anonsu_wyroznij\">Waga: </span> <span class=\"dane_anonsu_value\">69 kg</span></li> \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">Wzrost: </span> <span class=\"dane_anonsu_value\">170 cm</span></li>  \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">Biust: </span> <span class=\"dane_anonsu_value\">3   </span></li>   \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">Języki: </span> <span class=\"dane_anonsu_value\">   angielski,        </span></li>  \n"
                + "<li> alt=\"Cennik:\"/><span class=\"dane_anonsu_tytul\">Cennik</span> </li> \n"
                + "<li><span class=\"dane_anonsu_fiolet dane_anonsu_wyroznij dane_anonsu_tytul\">1 godz.:</span> <span class=\"dane_anonsu_fiolet dane_anonsu_tytul\">***150 zł***</span></li>  \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">15 min.:</span> <span class=\"dane_anonsu_value\">***100*** zł </span></li>  \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">30 min.:</span> <span class=\"dane_anonsu_value\">***150 zł*** </span></li>  \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">Całą noc:</span> <span class=\"dane_anonsu_value\">***1200 zł*** </span></li>     \n"
                + "<li><span class=\"dane_anonsu_tytul\">Czas pracy:</span> </li>   \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">pn. - pt.:</span> <span>od 8 do 22</span></li>    \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">sobota:</span> <span>od 8 do 22</span></li>  \n"
                + "<li><span class=\"dane_anonsu_wyroznij\">niedziela:</span> <span>od 8 do 22</span></li>  </ul> \n"
                + "</div> <!--<div class=\"clear\">&nbsp; </div> --> </div>  ";
        Matcher matcher = Pattern
                .compile(">([^<]+)</")
                .matcher(html);
        while (matcher.find()) {
            System.out.println("Found: " + matcher.group(1));
        }

对于字符串处理,Regex 很好。但是对于 HTML 处理,HTML 解析器可能会更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2023-04-09
    • 2013-11-07
    相关资源
    最近更新 更多