基于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

相关推荐
数字孪生家族8 小时前
视频孪生与空间智能:重构数字时空认知,定义智能决策新范式
人工智能·重构·空间智能·视频孪生与空间智能
FL171713149 小时前
Pytorch保存pt和pkl
人工智能·pytorch·python
jieshenai9 小时前
5090显卡,基于vllm完成大模型推理
人工智能·自然语言处理
逻极10 小时前
云智融合:AIGC与云计算服务新范式(深度解析)
人工智能·云计算·aigc·云服务
雪兽软件11 小时前
人工智能(AI)的商业模式创新路线图
人工智能
俊哥V12 小时前
AI一周事件(2025年11月12日-11月18日)
人工智能·ai
算法与编程之美12 小时前
提升minist的准确率并探索分类指标Precision,Recall,F1-Score和Accuracy
人工智能·算法·机器学习·分类·数据挖掘
拓端研究室12 小时前
专题:2025年全球机器人产业发展白皮书-具身智能时代的技术突破|附39份报告PDF、数据、可视化模板汇总下载
人工智能
金智维科技官方12 小时前
政务自动化中,智能体如何实现流程智能审批?
人工智能·自动化·政务·智能体