Android http 请求读取行

Android http request readline

我正在尝试通过网页源代码的http请求读取行。 我的目的是从结果中读取一个整数值(价格)。

我正在使用 bufferedReader 读取行。我不清楚哪种方法可以存储我想要的数据。

下面是我使用的代码:

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8") );
String data = null;
String webPage = "";
while ((data = reader.readLine()) != null){
   webPage += data + "\n";
}

更新: 这是 http 请求的示例结果:

 more...<div class="price-block--grid">
                <div class="old-price-wrap">
                    <!-- begin old price -->
                    <div class="product-card__old-price">RM 1,500.00</div>
                    <!-- end old price -->
                    <!-- begin sale -->
                    <div class="product-card__sale">- 6%</div>
                    <!-- end sale -->
                </div>
                <div class="product-card__price">RM 1,408.00</div>....more

我想知道有没有什么方法可以只检索价格值(例如 1408)并将其存储到我的数据变量中?

如果你确定每一行都是整数而不是创建一个整数变量或数组(如果你有多行)并将字符串解析为整数:Integer.parseInt(data);如果你在变量数据中有其他字符不是数字您可以使用正则表达式删除 none 数字:

data = data.replaceAll("\D+","");

希望这能回答您的问题。

没有默认方法来解析所有 html 并提取所需的部分。您可以将网页中的所有 html 保存为字符串,然后使用如下代码解析字符串以获取价格:

String toFind = "product-card__price\">";
String str1 = webPage.substring(webPage.indexOf(toFind) + toFind.length());
String priceString = str1.substring(0, str1.indexOf("<"));
int price = Integer.parseInt(priceString.replaceAll("\D+",""));

更新:

如果 html 中有多个要解析和保存的 div,则必须 运行 循环并根据需要解析它,例如:

String to = "product-card__price\">";
String remainingText = webPage;
ArrayList<Integer> integers = new ArrayList<>();
while (remainingText.indexOf(to) >= 0) {
    String tokenString = remainingText.substring(remainingText.indexOf(to) + to.length());
    String priceString = tokenString.substring(0, tokenString.indexOf("<"));
    int price = Integer.parseInt(priceString.replaceAll("\D+",""));
    integers.add(price);
    remainingText = tokenString;
}