You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从文本字符串提取纯数字?Selenium爬取网页价格格式转换

解决价格字符串转纯数字格式的问题

你可以通过字符串处理和正则表达式,把带$和小数点的价格文本转换成纯数字格式,以下是修改后的代码:

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class scrape {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver","...driver\\chromedriver.exe");
        ChromeDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("...");
        WebElement price = driver.findElement(By.xpath("//p[contains(@class, 'box-price-present')]"));
        String priceText = price.getText().trim();
        
        // 移除$符号和小数点,得到纯数字字符串
        String pureNumberStr = priceText.replaceAll("[^0-9]", "");
        
        // 转成数字类型(比如long)用于后续价格对比
        long pureNumber = 0;
        try {
            pureNumber = Long.parseLong(pureNumberStr);
            System.out.println("纯数字格式价格: " + pureNumber);
        } catch (NumberFormatException e) {
            System.err.println("价格格式解析失败: " + e.getMessage());
        }
        
        driver.quit();
    }
}

关键步骤说明:

  • trim():去除价格文本前后可能存在的空格,避免干扰后续处理
  • replaceAll("[^0-9]", ""):用正则表达式匹配所有非数字字符(包括$和.)并替换为空,直接得到纯数字字符串
  • 异常捕获:防止目标网站价格格式变化导致的解析失败,保证程序稳定性

如果你的需求是保留数值精度(比如$123.45转成123.45而非12345),可以改用以下方式处理:

// 移除$符号后转成double类型
double priceValue = Double.parseDouble(priceText.replace("$", ""));
// 若需要转成整数形式的分(比如12345代表123.45),可以乘以100后取整
long priceInCents = (long) (priceValue * 100);
System.out.println("分单位纯数字价格: " + priceInCents);

内容的提问来源于stack exchange,提问作者likenzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:12:37