From ab35ac8b769b2d9816dffb33a64f2c6f7bd5dd6e Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 05 九月 2024 17:05:55 +0800
Subject: [PATCH] 风行网页版爬虫

---
 src/main/java/com/yeshi/buwan/videos/youku/YouKuApiUtil.java |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 57 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/videos/youku/YouKuApiUtil.java b/src/main/java/com/yeshi/buwan/videos/youku/YouKuApiUtil.java
index efc19bc..4b64510 100644
--- a/src/main/java/com/yeshi/buwan/videos/youku/YouKuApiUtil.java
+++ b/src/main/java/com/yeshi/buwan/videos/youku/YouKuApiUtil.java
@@ -5,12 +5,14 @@
 import com.yeshi.buwan.videos.youku.entity.YouKuShowDetail;
 import com.yeshi.buwan.videos.youku.entity.YouKuShowSimple;
 import com.yeshi.buwan.videos.youku.entity.YouKuVideo;
+import org.json.JSONArray;
 import org.json.JSONObject;
 import org.yeshi.utils.HttpUtil;
 import org.yeshi.utils.StringUtil;
 
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.Type;
+import java.net.URI;
 import java.net.URLEncoder;
 import java.util.*;
 
@@ -95,6 +97,55 @@
         return null;
     }
 
+    /**
+     * @return com.yeshi.buwan.videos.youku.YouKuApiUtil.ListResultDTO
+     * @author hxh
+     * @description 鑾峰彇鐑棬鐨勪笓杈�
+     * @date 15:26 2024/3/21
+     * @param: category
+     * @param: page
+     * @param: pageSize
+     **/
+    public static ListResultDTO getHotShowListByCategory(String category, int page, int pageSize) throws UnsupportedEncodingException {
+
+        String seesion = "{\"subIndex\":96,\"trackInfo\":{\"parentdrawerid\":\"34441\"},\"spmA\":\"a2h05\",\"level\":2,\"spmC\":\"drawer3\",\"spmB\":\"8165803_SHAIXUAN_ALL\",\"index\":1,\"pageName\":\"page_channelmain_SHAIXUAN_ALL\",\"scene\":\"search_component_paging\",\"scmB\":\"manual\",\"path\":\"EP782932\",\"scmA\":\"20140719\",\"scmC\":\"34441\",\"from\":\"SHAIXUAN\",\"id\":227939,\"category\":\"鐢佃鍓"}";
+        net.sf.json.JSONObject sessionJSON = net.sf.json.JSONObject.fromObject(seesion);
+        sessionJSON.put("subIndex", (page - 1) * pageSize);
+        sessionJSON.put("category", category);
+        String url = String.format("https://www.youku.com/category/data?session=%s&params=%s&pageNo=%s", URLEncoder.encode(sessionJSON.toString(), "UTF-8"), URLEncoder.encode("{\"type\":\"" + category + "\"}", "UTF-8"), page);
+        Map<String,String> headers=new HashMap<>();
+        headers.put("Accept","text/javascript, text/html, application/xml, text/xml, */*");
+        headers.put("Bx-V","2.5.11");
+        headers.put("Content-Type","application/x-www-form-urlencoded");
+        headers.put("Referer","https://www.youku.com/channel/webtv/list?");
+
+        headers.put("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36");
+        headers.put("Sec-Ch-Ua","\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Google Chrome\";v=\"122\"");
+        headers.put("Sec-Ch-Ua-Mobile","?0");
+        headers.put("Sec-Ch-Ua-Platform","\"Windows\"");
+        headers.put("Sec-Fetch-Dest","empty");
+        headers.put("Sec-Fetch-Mode","cors");
+        headers.put("Sec-Fetch-Site","same-origin");
+
+        String result = HttpUtil.get(url,new HashMap<>(),headers);
+        net.sf.json.JSONObject resultJSON =    net.sf.json.JSONObject.fromObject(result);
+        List<YouKuShowSimple> list =new ArrayList<>();
+        if(resultJSON.optBoolean("success")){
+            net.sf.json.JSONArray array = resultJSON.optJSONObject("data").optJSONObject("filterData").optJSONArray("listData");
+            for(int i=0;i<array.size();i++){
+                net.sf.json.JSONObject item =  array.optJSONObject(i);
+                YouKuShowSimple show=new YouKuShowSimple();
+                show.setPoster(item.optString("img"));
+                show.setName(item.optString("title"));
+                show.setLink(item.optString("videoLink"));
+                URI uri=URI.create(show.getLink());
+                show.setId(uri.getQuery().replace("s=","").trim());
+                list.add(show);
+            }
+        }
+        return new ListResultDTO(list, 100);
+    }
+
     public static ListResultDTO getVideoList(String showId, int page, int pageSize) {
         Map<String, String> params = new HashMap<>();
         params.put("show_id", showId);
@@ -117,11 +168,14 @@
     }
 
 
-    public static void main(String[] args) {
+    public static void main(String[] args) throws  Exception{
 
-        getSearchRank(null,10);
+        getSearchRank("鐢佃鍓�",10);
+//        ListResultDTO dto = getShowListByCategory("鐢佃鍓�",1,20);
+//        System.out.printf(dto.toString());
+//        getHotShowListByCategory("鐢佃鍓�",1,24);
 
-//        YouKuShowDetail detail = getShowDetail("1e61efbfbdefbfbd04ef");
+//        YouKuShowDetail detail = getShowDetail("ffaac0420f0042b9b1e1");
 //        System.out.println(detail);
 //        getVideoList("0a17e614d7e311e68ce4", 1, 20);
 

--
Gitblit v1.8.0