本文将介绍如何通过Selenium爬取汽车之家图片,并利用阿里云通义万相AI进行图像优化处理,实现自动化获取高质量汽车图片的技术方案。
项目概述
在汽车相关的应用开发中,经常需要获取和处理汽车图片。传统方式往往面临图片质量不高、带有水印、风格不统一等问题。本项目结合Web爬虫技术和AI图像处理,提供了一个完整的解决方案:
-
使用Selenium自动化爬取汽车之家图片
-
通过阿里云通义万相AI进行图像优化和品牌替换
-
实现自动化、高质量的汽车图片处理流水线
技术架构
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. 资源管理
确保正确管理浏览器驱动和网络连接资源,避免内存泄漏。
应用场景
-
汽车电商平台:自动获取和处理商品图片
-
汽车媒体:批量处理汽车评测图片
-
汽车数据服务:构建标准化的汽车图片库
-
营销素材生成:快速生成品牌统一的宣传图片
优化建议
-
性能优化:
-
实现图片缓存机制
-
批量处理多个图片请求
-
使用连接池管理HTTP连接
-
-
功能扩展:
-
支持更多图片源网站
-
添加多种AI处理模板
-
实现图片质量自动评估
-
-
稳定性提升:
-
增加重试机制
-
实现故障转移
-
添加监控和告警
-
总结
本项目展示了如何将Web爬虫技术与AI图像处理相结合,解决实际业务中的图片获取和处理需求。通过Selenium实现可靠的网页内容抓取,结合阿里云通义万相的强大AI能力,实现了自动化、智能化的图片处理流水线。
这种技术组合不仅适用于汽车领域,还可以扩展到其他需要大量图片处理和优化的应用场景,为开发者提供了强大的技术工具链。
技术栈:Java + Selenium + JSoup + HttpClient + 阿里云DashScope