diff --git a/pom.xml b/pom.xml
index 9e28d15..744e1c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,7 +120,12 @@
spring-ai-pgvector-store
1.0.0-M6
-
+
+
+ org.jsoup
+ jsoup
+ 1.20.1
+
diff --git a/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java b/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java
index 6c1e2ba..ffeab9a 100644
--- a/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java
+++ b/src/main/java/com/huangge1199/aiagent/Service/ToolsService.java
@@ -18,4 +18,6 @@ public interface ToolsService {
String aiWriteFile(String question);
List webSearch(String question);
+
+ List webScrap(String question);
}
diff --git a/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java b/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java
index 53a99db..d646437 100644
--- a/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java
+++ b/src/main/java/com/huangge1199/aiagent/Service/impl/ToolsServiceImpl.java
@@ -4,6 +4,7 @@ import com.huangge1199.aiagent.Service.ToolsService;
import com.huangge1199.aiagent.config.MyLoggerAdvisor;
import com.huangge1199.aiagent.tools.FileTool;
import com.huangge1199.aiagent.tools.WeatherTool;
+import com.huangge1199.aiagent.tools.WebScrapTool;
import com.huangge1199.aiagent.tools.WebSearchTool;
import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
@@ -64,4 +65,10 @@ public class ToolsServiceImpl implements ToolsService {
WebSearchTool webSearchTool = new WebSearchTool(searchApiKey);
return List.of(webSearchTool.searchWeb(question).split(","));
}
+
+ @Override
+ public List webScrap(String url) {
+ WebScrapTool webScrapTool = new WebScrapTool();
+ return List.of(webScrapTool.scrapeWebPage(url).split(","));
+ }
}
diff --git a/src/main/java/com/huangge1199/aiagent/controller/ToolController.java b/src/main/java/com/huangge1199/aiagent/controller/ToolController.java
index 765b3cc..b85af8b 100644
--- a/src/main/java/com/huangge1199/aiagent/controller/ToolController.java
+++ b/src/main/java/com/huangge1199/aiagent/controller/ToolController.java
@@ -70,4 +70,12 @@ public class ToolController {
List result = toolsService.webSearch(question);
return R.ok(result);
}
+
+ @PostMapping("/webScrap")
+ @Operation(summary = "网页抓取")
+ public R> webScrap(@RequestBody String question) {
+ CheckUtils.checkEmpty(question, "问题");
+ List result = toolsService.webScrap(question);
+ return R.ok(result);
+ }
}
diff --git a/src/main/java/com/huangge1199/aiagent/tools/WebScrapTool.java b/src/main/java/com/huangge1199/aiagent/tools/WebScrapTool.java
new file mode 100644
index 0000000..b7d35dc
--- /dev/null
+++ b/src/main/java/com/huangge1199/aiagent/tools/WebScrapTool.java
@@ -0,0 +1,27 @@
+package com.huangge1199.aiagent.tools;
+
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.springframework.ai.tool.annotation.Tool;
+import org.springframework.ai.tool.annotation.ToolParam;
+
+import java.io.IOException;
+
+/**
+ * WebScrapTool
+ *
+ * @author huangge1199
+ * @since 2025/5/28 15:10:11
+ */
+public class WebScrapTool {
+
+ @Tool(description = "Scrape the content of a web page")
+ public String scrapeWebPage(@ToolParam(description = "URL of the web page to scrape") String url) {
+ try {
+ Document doc = Jsoup.connect(url).get();
+ return doc.html();
+ } catch (IOException e) {
+ return "Error scraping web page: " + e.getMessage();
+ }
+ }
+}