尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

jsoup解析本地html网页到本地2

jsoup解析本地html网页到本地2
📅 发布时间:2026/6/21 0:19:01
  • 在之前的jsoup解析本地html网页到本地中,虽然可以实现不同食物的解析,但是每个食物单独写一个方法实在太麻烦了
  • 注意到所有食物均属于Food的子类,且解析方法中有许多重复代码
  • 可将Food food以及Element foodDiv这两个方法中重复的参数作为通用方法的参数,提取公用方法:
// 提取公共解析逻辑到独立方法private void parseCommonFields(Element foodDiv, Food food) {String imgUrl = Objects.requireNonNull(foodDiv.selectFirst("img")).attr("src");String name = Objects.requireNonNull(foodDiv.selectFirst("h2")).text();String weight = foodDiv.select("p:contains(Weight)").text().replace("Weight: ", "");String caloriesStr = foodDiv.select("p:contains(Calories)").text().replace("Calories: ", "").replace("kcal", "").trim();int calories = Integer.parseInt(caloriesStr);String priceStr = foodDiv.select("p.price").text().replace("$", "");double price = Double.parseDouble(priceStr);String features = foodDiv.select("p.features").text().replace("Features: ", "");food.setName(name);food.setWeight(weight);food.setCalories(calories);food.setPrice(price);food.setFeatures(features);food.setImgUrl(imgUrl);}

然后,每个食物只需要调用公共方法,并提取自己的特有部分即可:

  1. Pizzas:
public List<Pizza> parsePizzas(String filePath) {List<Pizza> pizzas = new ArrayList<>();try {Document doc = Jsoup.parse(new File(filePath), "UTF-8");Elements pizzaDivs = doc.select("div.pizza");for (Element pizzaDiv : pizzaDivs) {Pizza pizza = new Pizza();parseCommonFields(pizzaDiv, pizza); // 调用公共解析方法// 只处理Pizza特有的字段String radius = pizzaDiv.select("p:contains(Radius)").text().replace("Radius: ", "");pizza.setRadius(radius);pizzas.add(pizza);}} catch (Exception e) {System.out.println("解析Pizza数据失败" + e.getMessage());}return pizzas;}
  1. FrenchFries:
public List<FrenchFries> parseFrenchFriess(String filePath) {List<FrenchFries> frenchFriesList = new ArrayList<>();try {Document doc = Jsoup.parse(new File(filePath), "UTF-8");Elements friesDivs = doc.select("div.french-fries");for (Element friesDiv : friesDivs) {FrenchFries frenchFries = new FrenchFries();parseCommonFields(friesDiv, frenchFries); // 调用公共解析方法// 只处理FrenchFries特有的字段String thickness = friesDiv.select("p:contains(Thickness)").text().replace("Thickness: ", "");frenchFries.setThickness(thickness);frenchFriesList.add(frenchFries);}} catch (IOException e) {throw new RuntimeException(e);}return frenchFriesList;}
  1. FriedChicken:
public List<FriedChicken> parseFriedChickens(String filePath) {List<FriedChicken> friedChickenList = new ArrayList<>();try {Document doc = Jsoup.parse(new File(filePath), "UTF-8");Elements friedChickenDivs = doc.select("div.fried-chicken");for (Element friedChickenDiv : friedChickenDivs) {FriedChicken friedChicken = new FriedChicken();parseCommonFields(friedChickenDiv, friedChicken); // 调用公共解析方法// 只处理FriedChicken特有的字段String spiciness = friedChickenDiv.select("p:contains(Spiciness)").text().replace("Spiciness: ", "");friedChicken.setSpiciness(spiciness);friedChickenList.add(friedChicken);}} catch (IOException e) {throw new RuntimeException(e);}return friedChickenList;}

相关新闻

  • 【转载】cap,pcap文件中的ipv4数据包转成ipv6数据包
  • QMPlay 编译
  • Linux 命令 - 教程

最新新闻

  • Ubuntu 14.04下WordPress XML-RPC四层防御实战
  • M2-PALE:融合过程挖掘与LLM的可解释混合智能体框架
  • Quanto量化实战:让Transformer在CPU/边缘设备高效运行
  • 基于流匹配与复值自编码器的脑肿瘤MRI生成式数据增强实战
  • 【技术干货】AI应用构建器实战:用大模型规划并生成创作者赞助管理后台
  • Ubuntu 20.04 安装 TensorFlow 的三大兼容性陷阱与生产级解决方案

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号