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¶ms=%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