遭遇
經(jīng)常在網(wǎng)頁看電影(小電影)的朋友可能會經(jīng)常遇到點(diǎn)擊播放按鈕,卻出來個“是兄弟就來砍我”的頁游頁面倚聚,很煩线衫。上一秒氣的想摔手機(jī),下一秒還是乖乖的返回再點(diǎn)一次惑折。每每想自己搞一個app來看電影授账,卻苦于沒有資源枯跑。
偶遇
根據(jù)神的指引,偶然接觸到了https://jsoup.org/白热,哇敛助,真的會上癮的。
jsoup 是一款Java 的HTML解析器屋确,可直接解析某個URL地址纳击、HTML文本內(nèi)容。它提供了一套非常省力的API乍恐,可通過DOM评疗,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)测砂。
- 從一個URL茵烈,文件或字符串中解析HTML;
- 使用DOM或CSS選擇器來查找砌些、取出數(shù)據(jù)呜投;
- 可操作HTML元素、屬性存璃、文本仑荐;
小試牛刀
打開www.kk3.tv,按下F12再刷新一下就可以查看頁面源代碼了纵东。此時粘招,就可以根據(jù)Html標(biāo)簽相應(yīng)的class即可獲取到內(nèi)容了。
舉個栗子偎球,想要得到上圖①中的推薦內(nèi)容洒扎,那么就可以根據(jù)圖中②出的Html來一層一層的剝開它。
//將Html解析成Document
Document doc = Jsoup.connect(url).get();
//獲取“最新推薦影片”div
Element divElement = doc.select("div.lside").select(".side-box").first();
//獲取“最新推薦影片”div下的所有l(wèi)i
Elements liElements = divElement.select("li");
for(Element e : liElements){
Element aElement = e.selectFirst("a");
//電影名稱
String movieName = aElement.text();
//電影詳情頁url
String url = aElement.attr("href");
}
所見即所得衰絮,當(dāng)我們將所需的信息全部解析出來袍冷,那么,我們就可以為網(wǎng)站做個a猫牡。胡诗。。橋豆麻袋淌友,順著剛才我們拿到的詳情頁的url跟進(jìn)去煌恢,出來的html里面根本沒有電影的播放鏈接。What is this? Are you kidding me?
一路向北
界面都寫好了震庭,總不能算了吧瑰抵,寫都寫了,這大過年的归薛。
F5谍憔、F5匪蝙、F5。习贫。逛球。
從上圖中可以看到j(luò)s、jpg苫昌、html颤绕、m3u8、png祟身。奥务。。橋豆麻袋袜硫,看到m3u8氯葬,如獲至寶。繼續(xù)跟婉陷。
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000,RESOLUTION=1080x420
/ppvod/E2D8DED09B2C26B00E76EAD5B6D202DE.m3u8
跟進(jìn)去看看
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4,
/20190115/UWMFnxw6/800kb/hls/q5DrmBA8987000.ts
播放鏈接找到了帚称,那么怎么得到的呢?往上找找play.js秽澳、player.js闯睹。黎明就在眼前,卻如此的黑暗担神。跟著js轉(zhuǎn)來轉(zhuǎn)去迷路了楼吃。
一路向西
薅了許久頭發(fā)發(fā)現(xiàn),這電影真好k妄讯。孩锡。。呸捞挥,瀏覽器是怎么拿到的浮创?瀏覽器能拿到,我應(yīng)該也能拿到吧砌函。
抱著試試看的態(tài)度斩披,通過WebView來顯示詳情頁。點(diǎn)擊播放讹俊,好high喲垦沉,感覺人生已經(jīng)到達(dá)了高潮。
WebViewClient webViewClient = new WebViewClient() {
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
//過濾出視頻格式url
if (url.contains(".mp4") || url.contains(".m3u8") || url.contains(".avi") ||
url.contains(".mov") || url.contains(".mkv") || url.contains(".flv") ||
url.contains(".f4v") || url.contains(".rmvb")) {
log("播放url:" + url);
}
return super.shouldInterceptRequest(view, url);
}
};
終于仍劈,廢了一小撮頭發(fā)拿到了視頻url厕倍。
功能需求、界面優(yōu)化贩疙、發(fā)現(xiàn)bug都可以進(jìn)群交流哦:847083651
項目地址:https://github.com/Mitaxing/MiTaMovie
感興趣的小伙伴可以掃碼體驗一下(使用瀏覽器打開)讹弯,提出寶貴的意見哦~