0

こんにちは、html ページ (プリンターの静的ページ) から 4 つの値を選択しようとしています。いくつかの試みがすべて失敗しましたが、皆さんが私を助けてくれますか?

穴のページ = http://pastebin.com/e7eKAV0x

ストレスのコード:

               <tr>                        
                 <td>                      
                   Yellow Cartridge
                   <br>
                   Order 305A (CE412A)
                 </td>
                 <td class="alignRight valignTop">  
                         40%
                       †
                 </td>
               </tr>

(ページを検査/確認してください) 4 つの異なるフィールド (プリンターの色) から 40% の値が必要です。色が抜けた時 --

私の最後の試み:

public void buildCartigesAndValue(String ipString) throws IOException {
        LOGGER.log(Level.INFO, "Starting mining over IP " + ipString);
        String context = getUrlSource(ipString);
        System.out.println(context); 

        urlPart = "/info_colorUsageJobLog.html?tab=Status&menu=ColorUsageLog";
        if (context.contains("HP Color LaserJet CP2025dn") || context.contains("HP Color LaserJet CM2320nf MFP")) {
            LOGGER.log(Level.INFO, "PRINTER TYPE ======= HP Color LaserJet CP2025dn");
            regexColorContent = "\\w+\\W{1}Cartridge (?<!Printer)";
            regexTagContent = "(<td{1}>)([^<]{1}[^.{20}][^&nbsp;&nbsp;].*?)(</td>)";
        }
        else if (context.contains("HP LaserJet 400 color M451dw")){
            LOGGER.log(Level.INFO, "PRINTER TYPE ======= HP LaserJet 400 color M451dw");
            regexColorContent = "\\w+\\W{1}Cartridge (?<!Printer)";
            regexTagContent = "Cartridge.{50}";
        }

        List<Integer> vals = findCartegisProcentr(context);
        List<String> colors = findCartigesColor(context);
        for (int i = 0; i < colors.size(); i++) {
            if (colors.get(i).contains("Printer")) {
                continue;
            }
            System.out.println(colors.get(i));
            addNewColorVal(colors.get(i), vals.get(i));
        }
        LOGGER.log(Level.INFO, "Stopping sucessfully ---- MAP ---- " + this.colorAmountMap.toString());
    }


public List<Integer> findCartegisProcentr(String context) {
    List<Integer> vals = new ArrayList<>();

    regexValContent = "\\d{2}|-{2}"; // FOR PARTICULAR THE VALUES

    Pattern patternTagContent = Pattern.compile(regexTagContent);
    Matcher matcherTagContent = patternTagContent.matcher(context);

    Pattern patternValContent = Pattern.compile(regexValContent);
    while (matcherTagContent.find()) {
        Matcher matcherValContent = patternValContent
                .matcher(matcherTagContent.group());
        matcherValContent.find();
        try {
            vals.add(Integer.parseInt(matcherValContent.group()));
        } catch (Exception e) {
            vals.add(0);
        }
    }
    return vals;
}
4

0 に答える 0