任何語言都是能夠爬蟲的,只要你懂的經常使用的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