java爬取網(wǎng)易云音樂評論

網(wǎng)易云神評論,永遠(yuǎn)不會讓人失望,下面,我們就一起來爬一爬

導(dǎo)包

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>3.3.2</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

實(shí)現(xiàn)代碼Controller及實(shí)體類

package com.example.api.controller;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.api.util.BaseResult;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;


/**
 * @Auyher: Ktry
 * @Date: 2020/3/22 22:25
 */
@RestController
public class wyy {

    @RequestMapping(value = {"buzz"},method = {RequestMethod.GET})
    public BaseResult buzz(@RequestParam(required = false,defaultValue = "") String id)  throws Exception {


        CloseableHttpClient closeableHttpClient = HttpClients.createDefault() ;
        HttpPost httpPost = new HttpPost("http://music.163.com/weapi/v1/resource/comments/R_SO_4_"+id+"?csrf_token=") ;
        httpPost.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36");

        List<NameValuePair> list=new ArrayList<NameValuePair>();
        list.add(new BasicNameValuePair("params","RlBC7U1bfy/boPwg9ag7/a7AjkQOgsIfd+vsUjoMY2tyQCPFgnNoxHeCY+ZuHYqtM1zF8DWIBwJWbsCOQ6ZYxBiPE3bk+CI1U6Htoc4P9REBePlaiuzU4M3rDAxtMfNN3y0eimeq3LVo28UoarXs2VMWkCqoTXSi5zgKEKbxB7CmlBJAP9pn1aC+e3+VOTr0"));
        list.add(new BasicNameValuePair("encSecKey","76a0d8ff9f6914d4f59be6b3e1f5d1fc3998317195464f00ee704149bc6672c587cd4a37471e3a777cb283a971d6b9205ce4a7187e682bdaefc0f225fb9ed1319f612243096823ddec88b6d6ea18f3fec883d2489d5a1d81cb5dbd0602981e7b49db5543b3d9edb48950e113f3627db3ac61cbc71d811889d68ff95d0eba04e9"));

        httpPost.setEntity(new UrlEncodedFormEntity(list));
        CloseableHttpResponse response=closeableHttpClient.execute(httpPost);

        HttpEntity entity=response.getEntity();
        String ux = EntityUtils.toString(entity,"utf-8") ;
        JSONObject jsonObject = JSON.parseObject(ux);

        LinkedHashMap<String, ArrayList> map = new LinkedHashMap<>();
        map.put("hot",Text1(jsonObject.getJSONArray("hotComments")));
        map.put("newest",Text1(jsonObject.getJSONArray("comments")));

        return new BaseResult("200",map);
    }

    public ArrayList Text1(JSONArray objects){
        ArrayList List = new ArrayList();
        for (Object v : objects) {
            poj1 poj1 = new poj1();
            JSONObject object = (JSONObject) v;
            poj1.setContent(object.getString("content"));
            poj1.setUserimg(object.getJSONObject("user").getString("avatarUrl"));
            poj1.setUsername(object.getJSONObject("user").getString("nickname"));
            poj1.setLikedCount(object.getString("likedCount"));
            poj1.setTime(object.getString("time"));

            ArrayList arrayList = new ArrayList();
            JSONArray beReplied = object.getJSONArray("beReplied");


            for (Object i : beReplied) {
                poj2 poj2 = new poj2();
                JSONObject objecti = (JSONObject) i;
                poj2.setContent(objecti.getString("content"));
                objecti = objecti.getJSONObject("user");
                poj2.setUserimg(objecti.getString("avatarUrl"));
                poj2.setUsername(objecti.getString("nickname"));
                arrayList.add(poj2);
            }
            poj1.setBeReplied(arrayList);
            List.add(poj1);
        };
        return List;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    class poj1{
        private String content;
        private String likedCount;
        private String time;
        private String userimg;
        private String username;
        private List beReplied;
    }
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    class poj2{
        private String content;
        private String userimg;
        private String username;
    }
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    public class BaseResult{
        private String code;
        private Object data;
    }
}

瀏覽器測試

以《可樂》這首歌為例

http://127.0.0.1:8080/buzz?id=1340200924

{
"code": "200",
"data": {
"hot": [
{
"content": "希望能在某一刻安放你們的些許悲傷情緒,就很好。",
"likedCount": "38185",
"time": "1547773069906",
"userimg": "http://p2.music.126.net/64m6LNpiFSMd029k6Ey_pQ==/109951164600709805.jpg",
"username": "趙紫驊",
"beReplied": []
},
{
"content": "99546949399 593693948 等我什么時候破解了你給我這一串?dāng)?shù)字 就快樂了吧",
"likedCount": "30348",
"time": "1559978151502",
"userimg": "http://p2.music.126.net/28gmImck5513o9Wn7OU2xw==/109951164589100157.jpg",
"username": "秦留香",
"beReplied": []
},
{
"content": "以前的《可樂》是遺憾\n現(xiàn)在的《可樂》是釋懷.",
"likedCount": "29850",
"time": "1547805383581",
"userimg": "http://p1.music.126.net/b9ybvjeGkTEXz2TDlSLHDw==/109951164834372225.jpg",
"username": "不是梨洲",
"beReplied": []
},
{
"content": "人和人的出場順序其實(shí)太重要了,陪你伶仃大醉的人是沒辦法送你回家的",
"likedCount": "21014",
"time": "1547683044256",
"userimg": "http://p1.music.126.net/187tCfgzd1oxoNgPsgHteQ==/109951164809444338.jpg",
"username": "迢往",
"beReplied": []
},
{
"content": "“其實(shí)你過得好的話我比誰都開心,可是我比誰都不愿意做那個人”",
"likedCount": "12365",
"time": "1547659146154",
"userimg": "http://p1.music.126.net/M-ZX4rPWIyguJ_PnekJVPw==/109951163271184431.jpg",
"username": "后原",
"beReplied": []
},
{
"content": "我想你了 我沒喝酒",
"likedCount": "11714",
"time": "1547701336701",
"userimg": "http://p1.music.126.net/-YxgiQ65tet2IFR3AcbbmA==/109951164813822025.jpg",
"username": "Depravlty",
"beReplied": []
},
{
"content": "不知道少了什么 總覺得沒有以前快樂.",
"likedCount": "9352",
"time": "1547682309807",
"userimg": "http://p1.music.126.net/kGeghWvELmzZsu_R4ENiDg==/109951164820805514.jpg",
"username": "岸域",
"beReplied": []
},
{
"content": "其實(shí)我們最遺憾的就是 從來沒有感受過被別人堅定選擇的感覺 就好像他剛好需要 而你剛好在",
"likedCount": "8519",
"time": "1547655100890",
"userimg": "http://p1.music.126.net/9II5W61HR719sg2IWokJzA==/109951164231479140.jpg",
"username": "黑夜難逃",
"beReplied": []
},
{
"content": "布衣飯菜,可樂終身,不必作遠(yuǎn)游計矣。",
"likedCount": "6925",
"time": "1548376801076",
"userimg": "http://p1.music.126.net/hRr7oaN_TXc_RWD2MVw49A==/109951163997689965.jpg",
"username": "假如我年少有為不自卑",
"beReplied": []
},
{
"content": "可憐情人節(jié)咱沒約會對象,愚人節(jié)咱沒表白的對象,還是清明節(jié)好,有祭拜的對象。",
"likedCount": "6573",
"time": "1550151892504",
"userimg": "http://p1.music.126.net/SLiXOtJf4jnAw7Tzd2mB3w==/109951163859899074.jpg",
"username": "潮貨snaker",
"beReplied": []
},
{
"content": "曲子都變了,你怎么還沒回來",
"likedCount": "5212",
"time": "1547659100942",
"userimg": "http://p1.music.126.net/x1bEPmHXWUzqGsA8-Igzuw==/109951164307928818.jpg",
"username": "超兇的小林",
"beReplied": []
},
{
"content": "我過的很好,希望你也是",
"likedCount": "4698",
"time": "1560079597985",
"userimg": "http://p1.music.126.net/aDTajkqhnkrvwGmMvDE67A==/109951164375302088.jpg",
"username": "忘記了尋找",
"beReplied": [
{
"content": "99546949399 593693948 等我什么時候破解了你給我這一串?dāng)?shù)字 就快樂了吧",
"userimg": "http://p1.music.126.net/28gmImck5513o9Wn7OU2xw==/109951164589100157.jpg",
"username": "秦留香"
}
]
},
{
"content": "我還在等你,可我無能為力",
"likedCount": "3733",
"time": "1547687232224",
"userimg": "http://p1.music.126.net/RLeBJe4D1ZzUtltxfoKDMg==/109951163250239066.jpg",
"username": "帳號已注銷",
"beReplied": []
},
{
"content": "這是同一句話,You will always have a special place in my heart!你在我心中一直有個特別的位置 我是查百度的只有一個追問追答那是你嗎?",
"likedCount": "3512",
"time": "1560102559659",
"userimg": "http://p1.music.126.net/vEvhKYhcIA2iB9L708dudw==/109951164356403668.jpg",
"username": "Goto丶sleep丶Archie",
"beReplied": [
{
"content": "99546949399 593693948 等我什么時候破解了你給我這一串?dāng)?shù)字 就快樂了吧",
"userimg": "http://p1.music.126.net/28gmImck5513o9Wn7OU2xw==/109951164589100157.jpg",
"username": "秦留香"
}
]
},
{
"content": "樂源自心 如果真的可以快樂 放手也是一種成全吧。",
"likedCount": "3027",
"time": "1547659834081",
"userimg": "http://p1.music.126.net/jp6GwSYYrTLg0YK_tpD56Q==/109951163878593989.jpg",
"username": "L陸嘉誠",
"beReplied": []
}
],
"newest": [
{
"content": "怦然心動最后也淪為泛泛之交 .",
"likedCount": "0",
"time": "1585061627118",
"userimg": "http://p1.music.126.net/2Ysi_kw1pMMBPkNRv5CMCg==/109951164642583015.jpg",
"username": "
小彤ovo",
"beReplied": []
},
{
"content": "聽哭了",
"likedCount": "1",
"time": "1585059337196",
"userimg": "http://p1.music.126.net/KLzEuf8kOh3jc5aAxofr0A==/109951164781356925.jpg",
"username": "文銘蘭",
"beReplied": []
},
{
"content": "一個賬號資料你還要看多少遍.",
"likedCount": "3",
"time": "1585058484202",
"userimg": "http://p1.music.126.net/EpuJMPVTTS4efxq9LKqECQ==/109951164833462861.jpg",
"username": "Eliaukub-a",
"beReplied": []
},
{
"content": "人這一生會遇到兩個人,:一個教會你如何去愛,一個就是被你愛的人。",
"likedCount": "5",
"time": "1585058442322",
"userimg": "http://p1.music.126.net/M25treYpkHXqoLbxNyzX7w==/109951164828417863.jpg",
"username": "愛吃魚的Climbing",
"beReplied": []
},
{
"content": "?!",
"likedCount": "0",
"time": "1585057922082",
"userimg": "http://p1.music.126.net/3A5ocL7pRHguwq7BPcnbiA==/109951164832698314.jpg",
"username": "迪士尼在逃公主200317",
"beReplied": [
{
"content": "加油啊,感覺自己一個人真的挺開心的,什么都不用去想就只做自己想做的吃自己想吃的玩自己想玩的,真的挺好",
"userimg": "http://p1.music.126.net/w9XvkO7Dc4bveR0szLVOng==/109951163849019827.jpg",
"username": "半晩"
}
]
},
{
"content": "沒有很長的故事沒有過激的行為 只是愛而不得",
"likedCount": "0",
"time": "1585057169572",
"userimg": "http://p1.music.126.net/pY-lbpad70252OOvwbDBUA==/109951164442499198.jpg",
"username": "p_5t",
"beReplied": [
{
"content": "布衣飯菜,可樂終身,不必作遠(yuǎn)游計矣。",
"userimg": "http://p1.music.126.net/hRr7oaN_TXc_RWD2MVw49A==/109951163997689965.jpg",
"username": "假如我年少有為不自卑
"
}
]
},
{
"content": "你怕不怕這輩子再也心動不起來了.",
"likedCount": "3",
"time": "1585057020303",
"userimg": "http://p1.music.126.net/EaA5fcn4uJ9Dku_vnvRRaA==/109951164367631612.jpg",
"username": "想看月亮_qian",
"beReplied": []
},
{
"content": "如果分手讓你快樂,讓你可以不用長大,沒有負(fù)擔(dān),那就分開吧",
"likedCount": "0",
"time": "1585056570643",
"userimg": "http://p1.music.126.net/Y21h_7EVqUDfEu4kL0JJMw==/109951164259118456.jpg",
"username": "叫我小仙妹",
"beReplied": []
},
{
"content": "重不重要 都不要了",
"likedCount": "2",
"time": "1585056497555",
"userimg": "http://p1.music.126.net/_CJ_WQRAtPTmswqzSvMz6w==/109951164186912232.jpg",
"username": "玖-North",
"beReplied": []
},
{
"content": "冬天的事就讓它在夏天來臨前過去吧",
"likedCount": "1",
"time": "1585056393300",
"userimg": "http://p1.music.126.net/5AE-Rvbzw6HduyiZcALajg==/109951163530184022.jpg",
"username": "Verney倩",
"beReplied": []
},
{
"content": "經(jīng)常會想下次見你穿什么款式的衣服,涂哪支口紅\n以后不想了",
"likedCount": "2",
"time": "1585056349247",
"userimg": "http://p1.music.126.net/5AE-Rvbzw6HduyiZcALajg==/109951163530184022.jpg",
"username": "Verney倩",
"beReplied": []
},
{
"content": "我再也不要喜歡警察哥哥了\n即使你的眼睛再好看",
"likedCount": "0",
"time": "1585056277844",
"userimg": "http://p1.music.126.net/5AE-Rvbzw6HduyiZcALajg==/109951163530184022.jpg",
"username": "Verney倩",
"beReplied": []
},
{
"content": "嗯,一樣。",
"likedCount": "0",
"time": "1585055752205",
"userimg": "http://p1.music.126.net/us1ZxAa8D6FmvrykoqR4mw==/109951164829671763.jpg",
"username": "老歌訴情",
"beReplied": [
{
"content": "這首歌很好聽,當(dāng)時剛分手的時候一直聽,單曲循環(huán),覺得無論是歌詞還是評論,都很有感覺?,F(xiàn)在再回來聽這首歌讓覺得已經(jīng)放下的我又濕了眼角,前段時間她給我發(fā)了一個在么,我的第一反應(yīng)竟然是她的號被盜了,來問我微信綁沒綁定銀行卡,那天我倆嘮了一個多小時,她跟我說她已經(jīng)放下了。",
"userimg": "http://p1.music.126.net/ibITxPWCkwmKAk8Xf72-2A==/109951164363816644.jpg",
"username": "gxzcjs"
}
]
},
{
"content": "我把他所有聯(lián)系方式都刪了 唯獨(dú)之前跟他的聊天記錄沒刪 我也想放過我自己",
"likedCount": "0",
"time": "1585055506200",
"userimg": "http://p1.music.126.net/dOui50pBTXhuJbSsPSz3GA==/109951164755756212.jpg",
"username": "H-九娘",
"beReplied": [
{
"content": "我把跟他有關(guān)的東西全都刪了,唯獨(dú)跟他的聯(lián)系方式?jīng)]刪。我啊,只是想放過自己",
"userimg": "http://p1.music.126.net/_Iqg9kpXSohtxWN_5dYu8g==/109951164753698871.jpg",
"username": "顏海吧"
}
]
},
{
"content": "黃鉆我就不續(xù)費(fèi)了 你空間我就不去了",
"likedCount": "0",
"time": "1585055405835",
"userimg": "http://p1.music.126.net/dOui50pBTXhuJbSsPSz3GA==/109951164755756212.jpg",
"username": "H-九娘",
"beReplied": []
},
{
"content": "不打擾是我愛你的最后方式",
"likedCount": "1",
"time": "1585055339204",
"userimg": "http://p1.music.126.net/dOui50pBTXhuJbSsPSz3GA==/109951164755756212.jpg",
"username": "H-九娘",
"beReplied": []
},
{
"content": "放過你了",
"likedCount": "0",
"time": "1585055266915",
"userimg": "http://p1.music.126.net/lQXuAvoy6IbquHG9cpLRow==/109951164301256152.jpg",
"username": "632喜歡",
"beReplied": []
},
{
"content": "有些事只適合爛在心里.",
"likedCount": "1",
"time": "1585054967299",
"userimg": "http://p1.music.126.net/JJOubsAPvWbUBJVZdKio-A==/109951164641943714.jpg",
"username": "椿湫1118",
"beReplied": []
},
{
"content": "我應(yīng)該覺得高興的,可是,我覺得孤單了[可愛]",
"likedCount": "1",
"time": "1585054800171",
"userimg": "http://p1.music.126.net/JDfzSSnq7RTGVXbUlABE1w==/109951164664639297.jpg",
"username": "小寧姐姐丫",
"beReplied": []
},
{
"content": "我找不到可以偷偷發(fā)泄的地方,所以只能在網(wǎng)易云評論里悄悄崩潰",
"likedCount": "1",
"time": "1585054786848",
"userimg": "http://p1.music.126.net/qkRARfOrSyIaLJIuERKn-g==/109951163075775692.jpg",
"username": "BNKNM",
"beReplied": []
}
]
}
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容