基于Selenium和AI的图像处理

本文将介绍如何通过Selenium爬取汽车之家图片,并利用阿里云通义万相AI进行图像优化处理,实现自动化获取高质量汽车图片的技术方案。

项目概述

在汽车相关的应用开发中,经常需要获取和处理汽车图片。传统方式往往面临图片质量不高、带有水印、风格不统一等问题。本项目结合Web爬虫技术和AI图像处理,提供了一个完整的解决方案:

  1. 使用Selenium自动化爬取汽车之家图片

  2. 通过阿里云通义万相AI进行图像优化和品牌替换

  3. 实现自动化、高质量的汽车图片处理流水线

技术架构

1. 图片爬取模块

图片爬取模块基于Selenium WebDriver实现,主要功能是从汽车之家网站获取指定车型的图片。

复制代码
public static String getCarImage(String carInfo) {
    // 构建搜索URL
    String url = "https://sou.autohome.com.cn/zonghe?q=" + carInfo + "&entry=42";
    
    // 配置Chrome无头浏览器
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--headless=new");
    options.addArguments("--disable-gpu");
    options.addArguments("--window-size=1920,1080");
    
    WebDriver driver = new ChromeDriver(options);
    try {
        driver.get(url);
        
        // 等待目标图片元素加载
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(2));
        wait.until(ExpectedConditions.presenceOfElementLocated(
            By.cssSelector("img.cus-react-img")));
        
        Thread.sleep(1000); // 额外等待确保图片加载
        
        // 解析页面获取图片URL
        String pageSource = driver.getPageSource();
        Document document = Jsoup.parse(pageSource);
        Elements imgElements = document.select("img.cus-react-img");
        
        if (!imgElements.isEmpty()) {
            Element firstImg = imgElements.first();
            String imgUrl = firstImg.attr("src");
            
            // 处理相对路径
            if (imgUrl != null && !imgUrl.isEmpty() && !imgUrl.startsWith("http")) {
                imgUrl = "https:" + imgUrl;
            }
            return imgUrl;
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        driver.quit();
    }
    return "获取图片失败";
}

关键技术点:

  • 无头浏览器:使用Chrome无头模式,适合服务器环境部署

  • 智能等待:结合显式等待和隐式等待,确保动态内容加载完成

  • JSoup解析:使用JSoup处理页面源码,提取目标图片元素

  • 异常处理:完善的异常处理机制,保证程序稳定性

2. AI图像处理模块

图像处理模块调用阿里云通义万相AI服务,对爬取的图片进行优化处理。

复制代码
public static String doWork(String originImageUrl) {
    String apiKey = "sk-你的API密钥";
    String requestBody = """
        {
            "model": "wan2.5-i2i-preview",
            "function":"super_resolution",
            "size":"1024*1024",
            "input": {
                "prompt": "去除图片中的汽车之家LOGO,换成车来客三个红色的字。图像超分,图像要有合适的背景。",
                "negative_prompt": "不要有很粗糙的线条。不要出现低分辨率、差质量、低质量、残缺、比例不良等情况",
                "images": ["%s"]
            },
            "parameters": {"n": 1}
        }
        """.formatted(originImageUrl);
    
    try {
        HttpClient client = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();
            
        // 提交图像处理任务
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://dashscope.aliyuncs.com/api/v1/services/aigc/image2image/image-synthesis"))
            .header("X-DashScope-Async", "enable")
            .header("Authorization", "Bearer " + apiKey)
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(requestBody))
            .build();
            
        HttpResponse<String> response = client.send(request, 
            HttpResponse.BodyHandlers.ofString());
        
        // 解析任务ID并轮询结果
        JsonParse1 jsonParse1 = gson.fromJson(response.body(), JsonParse1.class);
        String taskId = jsonParse1.output.task_id;
        
        // 轮询任务状态
        request = HttpRequest.newBuilder()
            .uri(URI.create("https://dashscope.aliyuncs.com/api/v1/tasks/" + taskId))
            .header("Authorization", "Bearer " + apiKey)
            .GET()
            .build();
            
        String dealImageUrl = "";
        while (true) {
            response = client.send(request, HttpResponse.BodyHandlers.ofString());
            if (response.statusCode() == 200) {
                JsonParse1 jsonParse2 = gson.fromJson(response.body(), JsonParse1.class);
                if (jsonParse2.output.task_status.equals("SUCCEEDED")) {
                    List<Results> resultsList = jsonParse2.output.results;
                    dealImageUrl = resultsList.get(0).url;
                    break;
                } else {
                    Thread.sleep(3000); // 3秒查询一次
                }
            } else {
                dealImageUrl = "图片处理异常";
                break;
            }
        }
        return dealImageUrl;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "图片处理异常";
}

AI处理功能:

  • Logo替换:将原图中的"汽车之家"Logo替换为"车来客"

  • 超分辨率:提升图像分辨率到1024×1024

  • 背景优化:为图像生成合适的背景

  • 质量提升:消除低质量、残缺等问题

核心实现细节

1. 异步任务处理

阿里云图像处理服务采用异步方式,需要先提交任务,然后通过任务ID轮询处理状态:

复制代码
class JsonParse1 {
    Output output;
}

class Output {
    String task_id;
    String task_status;
    List<Results> results;
}

class Results {
    String url;
}

2. 提示词工程

精心设计的提示词对AI处理效果至关重要:

  • 正向提示词:明确指定要执行的操作和期望效果

  • 负向提示词:排除不希望出现的问题和缺陷

3. 错误处理机制

  • 网络请求超时处理

  • 任务状态异常处理

  • 图片URL格式验证

部署注意事项

1. 环境配置

复制代码
// JDK版本兼容性处理
// System.setProperty("webdriver.chrome.driver", 
//     "src/main/resources/chromedriver-win64/chromedriver.exe");

2. 资源管理

确保正确管理浏览器驱动和网络连接资源,避免内存泄漏。

应用场景

  1. 汽车电商平台:自动获取和处理商品图片

  2. 汽车媒体:批量处理汽车评测图片

  3. 汽车数据服务:构建标准化的汽车图片库

  4. 营销素材生成:快速生成品牌统一的宣传图片

优化建议

  1. 性能优化

    • 实现图片缓存机制

    • 批量处理多个图片请求

    • 使用连接池管理HTTP连接

  2. 功能扩展

    • 支持更多图片源网站

    • 添加多种AI处理模板

    • 实现图片质量自动评估

  3. 稳定性提升

    • 增加重试机制

    • 实现故障转移

    • 添加监控和告警

总结

本项目展示了如何将Web爬虫技术与AI图像处理相结合,解决实际业务中的图片获取和处理需求。通过Selenium实现可靠的网页内容抓取,结合阿里云通义万相的强大AI能力,实现了自动化、智能化的图片处理流水线。

这种技术组合不仅适用于汽车领域,还可以扩展到其他需要大量图片处理和优化的应用场景,为开发者提供了强大的技术工具链。

技术栈:Java + Selenium + JSoup + HttpClient + 阿里云DashScope

相关推荐
song150265372984 小时前
全检垫圈垫片 视觉检测设备 在线自动化瑕疵检测机
人工智能·自动化·视觉检测
song150265372984 小时前
铜鼻子冷压端子视觉检测机 尺寸外观瑕疵自动化检测设备
人工智能·自动化·视觉检测
wzx_Eleven4 小时前
【论文阅读】AAAI 2025 | 面向精确分割式联邦学习的多模型聚合与知识重放
论文阅读·人工智能·机器学习
Zack_Liu4 小时前
LSS论文阅读
论文阅读·人工智能·目标跟踪
张较瘦_4 小时前
[论文阅读] AI + Debug | 基于大语言模型的GitHub故障复现测试用例生成方法解析
论文阅读·人工智能·语言模型
Small___ming4 小时前
【论文笔记】扩散模型——如何通俗理解传统概率模型的核心矛盾
论文阅读·人工智能·扩散模型·生成式人工智能
时序之心4 小时前
时序论文速递:覆盖时间序列预测、分类、异常检测及交叉应用!(10.20-10.24)
人工智能·分类·数据挖掘·论文·时间序列
会笑的小熊4 小时前
论文阅读笔记——数据增强
人工智能·计算机视觉