如何从文本字符串提取纯数字?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
相关产品推荐
相关产品推荐

