Java爬蟲其實也很簡單,實用的入門級爬蟲

前言

任何語言都是能夠爬蟲的,只要你懂的經常使用的http協議啥的就能夠模仿瀏覽器的行爲獲取你想要的數據。這裏我將教你們一個簡單實用的案例:如何獲取全民K歌的下載連接。
ps: 這主要是教你們一個入門級的爬蟲,不是但願你們去跳過vip下載...
這裏有碼雲的代碼片斷是main的解析能夠參考下: 碼雲代碼片斷node

瀏覽器抓包

那種專業fildder這類軟件抓包我就不提了,省得文章顯得更加複雜化。
推薦用谷歌瀏覽器容易看。git

1.打開瀏覽器進去一個分享連接
2.按F12進入開發者模式
3.點擊NetWork
4.最好從新刷新一下頁面看下全部訪問路徑
圖片描述

只要是網頁瀏覽器就能夠抓到全部的訪問請求。接下來就是尋找那個音樂的連接了:
圖片描述
等你找到你會發現很顯然,那個路徑沒有任何規律,也不知道下載路徑如何而來。可是隻要思想不滑坡,辦法總比困難多。咱們找一下是否能夠在HTML這些直接找到現成的連接,音樂的播放標籤通常都是 audio
咱們去Element查找這個節點的時候能夠發現確實有下載連接
圖片描述
這樣咱們大概知道連接的地址了!咱們就能夠放開手擼代碼了!json

嘗試擼代碼

這裏我推薦用Jsoup,我用的是版本是1.11.2。瀏覽器

maven: http://www.mvnrepository.com/...
public class QuanMinJousp {
    public static void main(String[] args)throws Exception {    
        //這裏是分享地址:
        String url  ="https://kg2.qq.com/node/play?s=571cI75H1xb495Eq&shareuid=609c9b812624338a&topsource=a0_pn201001006_z11_u21643941_l0_t1534223843__";
        Connection tempConn = Jsoup.connect(url);
        //模擬瀏覽器的請求頭
        tempConn.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
        //開始鏈接HTTP請求。
        Connection.Response demo = tempConn.ignoreContentType(true).method(Connection.Method.GET)
                .execute();
        Document documentDemo = demo.parse();
                //這裏就是獲取該頁面的HTML元素。
        System.out.println(documentDemo.toString());
       }
}

打印出來的HTML不出所料,就找不到audio的標籤,很明顯是後續才加載出這個標籤來播放音樂的。那這個下載地址是哪裏來的呢。咱們能夠在打印出來的HTML能夠找到其餘線索:
不出所料,在全部script標籤中 的第三個咱們發現了貓膩。
圖片描述微信

全部的數據都在這個標籤裏,包括評論,送花,歌曲連接等等全部都在裏面。咱們拿到標籤裏的內容就能夠了。裏面的參數居然是標準的json格式更加天助我也!咱們用代碼去掉閒雜人等。maven

Elements scriptElements = documentDemo.getElementsByTag("script");
        String initScriptStr = scriptElements.get(2).toString();
        String jsonStr = initScriptStr.substring(initScriptStr.indexOf("{"), initScriptStr.indexOf("; </script>"));
        //這就得到全部參數最終的json體了。
        System.out.println(jsonStr);

接下來就是Json解析成本身的實體類對象啥的了。這塊沒啥好說的,不是咱們的教程範圍。我通常用的simpleJson,gson,fastJson。阿里巴巴的我用的多一點。學習

最後我把這段代碼功能接入個人微信公衆號實現效果:

圖片描述

小夥伴們能夠關注公衆號體驗一波:
圖片描述ui

結束

該教程僅供學習參考,不涉及商業,涉及侵權啥的任何問題本人概不負責啊哈哈哈哈哈略略略url

相關文章
相關標籤/搜索