From 6b01a5fbfeda9af5720c2ecd127267a77bc399e7 Mon Sep 17 00:00:00 2001
From: ZiJIe <17738440858@163.com>
Date: Tue, 15 Jul 2025 17:39:12 +0800
Subject: [PATCH] 222
---
ruoyi-admin/pom.xml | 10 +-
.../web/controller/ProductsController.java | 17 --
.../controller/tool/ProductsController.java | 61 ++++++
.../controller/tool/RakutenController.java | 189 ++++++++++++++++++
.../controller/tool/WebMagicController.java | 14 +-
ruoyi-ui/src/api/prod/ozon.js | 9 +
ruoyi-ui/src/api/prod/rakuten.js | 9 +
ruoyi-ui/src/views/prod/ozon/index.vue | 85 ++++++++
ruoyi-ui/src/views/prod/rakuten/index.vue | 110 ++++++++++
9 files changed, 473 insertions(+), 31 deletions(-)
delete mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/ProductsController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/ProductsController.java
create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/RakutenController.java
create mode 100644 ruoyi-ui/src/api/prod/ozon.js
create mode 100644 ruoyi-ui/src/api/prod/rakuten.js
create mode 100644 ruoyi-ui/src/views/prod/ozon/index.vue
create mode 100644 ruoyi-ui/src/views/prod/rakuten/index.vue
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 6c69ee70..6321c9b2 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -99,7 +99,15 @@
false
${project.artifactId}
-
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 15
+ 15
+
+
${project.artifactId}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ProductsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ProductsController.java
deleted file mode 100644
index d43dbbd5..00000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/ProductsController.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.ruoyi.web.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.core.controller.BaseController;
-/**
- * prodController
- *
- * @author ruoyi
- * @date 2025-06-21
- */
-@RestController
-@RequestMapping("/prod/products")
-public class ProductsController extends BaseController
-{
-
-
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/ProductsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/ProductsController.java
new file mode 100644
index 00000000..884c117d
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/ProductsController.java
@@ -0,0 +1,61 @@
+package com.ruoyi.web.controller.tool;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.GetMapping;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import us.codecraft.webmagic.Page;
+import us.codecraft.webmagic.Site;
+import us.codecraft.webmagic.Spider;
+import us.codecraft.webmagic.processor.PageProcessor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 1688Controller
+ *
+ * @author ruoyi
+ * @date 2025-07-15
+ */
+@RestController
+@RequestMapping("/prod/ozon")
+public class ProductsController extends BaseController
+{
+ @GetMapping("/scrapeImages")
+ public AjaxResult scrapeImages()
+ {
+ String url = "https://www.ozon.ru/highlight/ozon-global/?currency_price=14.000%3B500.000";
+
+ List imageUrls = new ArrayList<>();
+
+ Site site = Site.me()
+ .setRetryTimes(3)
+ .setTimeOut(10000);
+ site.addHeader("cookie", "xcid=b30f6db523d4aee734a822aa0a230b3f; __Secure-ext_xcid=b30f6db523d4aee734a822aa0a230b3f; __Secure-ab-group=92; rfuid=NjkyNDcyNDUyLDEyNC4wNDM0NzUyNzUxNjA3NCwxMDI4MjM3MjIzLC0xLC05ODc0NjQ3MjQsVzNzaWJtRnRaU0k2SWtOb2NtOXRhWFZ0SUZCRVJpQlFiSFZuYVc0aUxDSmtaWE5qY21sd2RHbHZiaUk2SWxCdmNuUmhZbXhsSUVSdlkzVnRaVzUwSUVadmNtMWhkQ0lzSW0xcGJXVlVlWEJsY3lJNlczc2lkSGx3WlNJNkltRndjR3hwWTJGMGFXOXVMM2d0WjI5dloyeGxMV05vY205dFpTMXdaR1lpTENKemRXWm1hWGhsY3lJNkluQmtaaUo5WFgwc2V5SnVZVzFsSWpvaVEyaHliMjFwZFcwZ1VFUkdJRlpwWlhkbGNpSXNJbVJsYzJOeWFYQjBhVzl1SWpvaUlpd2liV2x0WlZSNWNHVnpJanBiZXlKMGVYQmxJam9pWVhCd2JHbGpZWFJwYjI0dmNHUm1JaXdpYzNWbVptbDRaWE1pT2lKd1pHWWlmVjE5WFE9PSxXeUo2YUMxRFRpSmQsMCwxLDAsMjQsMjM3NDE1OTMwLDgsMjI3MTI2NTIwLDAsMSwwLC00OTEyNzU1MjMsUjI5dloyeGxJRWx1WXk0Z1RtVjBjMk5oY0dVZ1IyVmphMjhnVjJsdU16SWdOUzR3SUNoWGFXNWtiM2R6SUU1VUlERXdMakE3SUZkcGJqWTBPeUI0TmpRcElFRndjR3hsVjJWaVMybDBMelV6Tnk0ek5pQW9TMGhVVFV3c0lHeHBhMlVnUjJWamEyOHBJRU5vY205dFpTOHhNamN1TUM0d0xqQWdVMkZtWVhKcEx6VXpOeTR6TmlBeU1EQXpNREV3TnlCTmIzcHBiR3hoLGV5SmphSEp2YldVaU9uc2lZWEJ3SWpwN0ltbHpTVzV6ZEdGc2JHVmtJanBtWVd4elpTd2lTVzV6ZEdGc2JGTjBZWFJsSWpwN0lrUkpVMEZDVEVWRUlqb2laR2x6WVdKc1pXUWlMQ0pKVGxOVVFVeE1SVVFpT2lKcGJuTjBZV3hzWldRaUxDSk9UMVJmU1U1VFZFRk1URVZFSWpvaWJtOTBYMmx1YzNSaGJHeGxaQ0o5TENKU2RXNXVhVzVuVTNSaGRHVWlPbnNpUTBGT1RrOVVYMUpWVGlJNkltTmhibTV2ZEY5eWRXNGlMQ0pTUlVGRVdWOVVUMTlTVlU0aU9pSnlaV0ZrZVY5MGIxOXlkVzRpTENKU1ZVNU9TVTVISWpvaWNuVnVibWx1WnlKOWZYMTksNjUsLTExODM0MTA3MiwxLDEsLTEsMTY5OTk1NDg4NywxNjk5OTU0ODg3LDMzNjAwNzkzMyw4; guest=true; x-hng=lang=zh-CN&domain=www.ozon.ru; __Secure-user-id=210183128; is_adult_confirmed=; is_alco_adult_confirmed=; ozonIdAuthResponseToken=eyJhbGciOiJIUzI1NiIsIm96b25pZCI6Im5vdHNlbnNpdGl2ZSIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoyMTAxODMxMjgsImlzX3JlZ2lzdHJhdGlvbiI6ZmFsc2UsInJldHVybl91cmwiOiIiLCJwYXlsb2FkIjpudWxsLCJleHAiOjE3NTI1NDczNzksImlhdCI6MTc1MjU0NzM2OSwiaXNzIjoib3pvbmlkIn0.DX0nfNf9rcuPdt9lzE5fn1en5yqiD7Aw1vqpRt13OiU; abt_data=7.iE3bYFZ2m7yMc8mn5Rm8V9pI_ELHBH8eHNcM1w0kxMd8-HXap37uTEk6E_nAsmdWsO5pYQKhwamysCHZexl_YPPpWOWk7wgfKSuP8pTEdlDlXwLOy-sokLKLOdHyTFxcxNx5yRfpmNqFoQP8D5KccoiDh5U5kU8x7rJDLpqixSah6TFKKYsTiZrokn5Tb5aJu5lMAZBOkhr7CkYTFd_4j9wtALKnFM-oZGxCX0qTgUP5kIf9MfDSGI0U0pZ6igW6aSGirFb5ZVNmCV2D4NImCGn00K_Sn8ZX0vR6krWW1cixLrCnKp0rO7JJEFi9c7-4FL54ZvaJ-tKg8ALwlPmRIr-aI156iSlHQU6lULo8oKmBL13eLI9d_d8fp50BJe7oA6PNylYhI5DdV81WGI2EFnZtR3sVYF8O4qrS7gXwsMCoku51prrYZG1pLJJiD8HfAPTnFLvxpURZ7x1-lsAinljoh8_N1oVP89PVPJjd-tKQyRiUnleAnwaeF9kQmGvIMqYSYi506QWf-KHqfdEnEA; __Secure-ETC=90ef0679199c55cdec8592a7e480c3c5; __Secure-access-token=8.210183128.eH-AgbboQkWnqX9a7XeDqQ.92.Aa5lCeHJOXOoA90AsaTtX6OsppswLMDuxLGNHW98_K79BKfyceiX8mpea_qxY5qoaYUOO7_5hsQ6ndRa9tCxUzOCvERd7f056ZaoOw8W9lnUgQn_q5TX-7X2WK8ejP7OZg.20250715024249.20250715073104.M4j1mEB0PD4T55SZ4iQqCG6lZytjYmwG50Q28F-3q_s.1a7857bd2a7e95575; __Secure-refresh-token=8.210183128.eH-AgbboQkWnqX9a7XeDqQ.92.Aa5lCeHJOXOoA90AsaTtX6OsppswLMDuxLGNHW98_K79BKfyceiX8mpea_qxY5qoaYUOO7_5hsQ6ndRa9tCxUzOCvERd7f056ZaoOw8W9lnUgQn_q5TX-7X2WK8ejP7OZg.20250715024249.20250715073104.Ip-CdBv1mEGilz15LZCTwFmfoxEL8RrayFNa90r_XLI.197047eb6a54a7041; is_cookies_accepted=1; token=eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjJiMDM5ODBiLWYzZDQtNDI2Ny04NTQ2LWYwZjQxOTczNTAyNiJ9.oIF-bHh7pubdNWzETutNcoc_Nu-A7zgqBIJwcHFgF0V2s-xfnZVbs_EbvyJSBYYkUjqrBlJP_1qBl3vB1mQ_ow");
+
+ Spider.create(new PageProcessor() {
+ @Override
+ public void process(Page page) {
+ List imgs = page.getHtml()
+ .css("div.ip7_24.p7i_24 img.i7p_24.b95_3_1-a", "src").all();
+ page.putField("imageUrls", imgs);
+ }
+
+ @Override
+ public Site getSite() {
+ return site;
+ }
+ }).addUrl(url)
+ .addPipeline((resultItems, task) -> {
+ List imgs = resultItems.get("imageUrls");
+ if (imgs != null) {
+ imageUrls.addAll(imgs);
+ }
+ })
+ .thread(1)
+ .run();
+
+ return AjaxResult.success(imageUrls);
+ }
+}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/RakutenController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/RakutenController.java
new file mode 100644
index 00000000..86149b67
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/RakutenController.java
@@ -0,0 +1,189 @@
+package com.ruoyi.web.controller.tool;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.util.WebMagicProxyUtil;
+
+import us.codecraft.webmagic.Page;
+import us.codecraft.webmagic.Site;
+import us.codecraft.webmagic.Spider;
+import us.codecraft.webmagic.processor.PageProcessor;
+import us.codecraft.webmagic.downloader.HttpClientDownloader;
+import us.codecraft.webmagic.proxy.Proxy;
+import us.codecraft.webmagic.proxy.SimpleProxyProvider;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.net.InetSocketAddress;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 乐天市场控制器
+ *
+ * @author ruoyi
+ * @date 2025-07-15
+ */
+@RestController
+@RequestMapping("/prod/rakuten")
+public class RakutenController extends BaseController
+{
+ private static final Logger logger = LoggerFactory.getLogger(RakutenController.class);
+
+ private final Random random = new Random();
+
+ private static final String DEFAULT_PROXY_HOST = "127.0.0.1";
+ private static final String DEFAULT_PROXY_PORT = "7890";
+
+ @GetMapping("/scrapeProducts")
+ public AjaxResult scrapeProducts()
+ {
+ String url = "https://ranking.rakuten.co.jp/search?stx=GBAmarket&smd=0&prl=&pru=&rvf=&arf=&vmd=0&ptn=1&srt=1&sgid=";
+
+ List