徐州企業(yè)網(wǎng)站設(shè)計(jì)免費(fèi)的網(wǎng)站推廣在線推廣
目錄
前言
腳本編寫
腳本
?
前言
B站的一些番劇時(shí)不時(shí)會(huì)“限時(shí)免費(fèi)”,白嫖黨最愛,主打一個(gè)又占到便宜的快樂。但是在番劇索引里卻沒有搜索選項(xiàng)可以直接檢索“限時(shí)免費(fèi)”的番劇,只能自己一頁一頁的翻去查看,非常麻煩。
自己找限免番劇這個(gè)流程可以概括為:翻頁-查找“限時(shí)免費(fèi)”的番劇,重復(fù)直至遍歷整個(gè)番劇索引,這個(gè)工作簡單重復(fù),意味著就可以用腳本來完成。
腳本編寫
打開B站,進(jìn)入到索引檢索頁面
番劇索引 - 嗶哩嗶哩 (゜-゜)つロ 干杯~-bilibilibilibili是國內(nèi)知名的視頻彈幕網(wǎng)站,這里有最及時(shí)的動(dòng)漫新番,最棒的ACG氛圍,最有創(chuàng)意的Up主。大家可以在這里找到許多歡樂。https://www.bilibili.com/anime/index先找到一個(gè)“限時(shí)免費(fèi)”的番劇,這里以“炮姐”這部番劇為例(這番在B站估計(jì)是永久限免的)
這里是在第11頁找到的
按F12,打開開發(fā)者工具
查看“限時(shí)免費(fèi)”標(biāo)簽元素以及番劇名稱標(biāo)簽元素
?可以看到“限時(shí)免費(fèi)”標(biāo)簽對(duì)應(yīng)的 class 為?corner-tag badge_3
意味著我們可以直接通過
document.getElementsByClassName('corner-tag badge_3');
?來直接獲取當(dāng)前頁面所有的“限時(shí)免費(fèi)”<span>標(biāo)簽
拿到<span>標(biāo)簽后,就能通過元素的相鄰位置,拿到該標(biāo)簽下對(duì)應(yīng)的番劇名字
document.getElementsByClassName('corner-tag badge_3')[0].parentElement.nextElementSibling.text
?
?這樣就能使用腳本來獲取到當(dāng)前頁面所有的限免番劇名字了,不用自己一行行看了
解決了當(dāng)前頁面的查找,接下來只需要讓腳本實(shí)現(xiàn)頁面跳轉(zhuǎn)就行了
查看分頁的標(biāo)簽元素
?可以看到當(dāng)前頁的標(biāo)簽元素 class 為 p active
document.getElementsByClassName('p active');
下一頁的標(biāo)簽元素 class 為 p nextpage
document.getElementsByClassName('p next-page');
?查找完當(dāng)前頁面后,只需要判斷當(dāng)前頁面是否還有”下一頁“這個(gè)標(biāo)簽,若存在,則跳轉(zhuǎn)后繼續(xù)查找,否則腳本運(yùn)行結(jié)束,輸出所有的限免番劇
如下所示:
腳本開始運(yùn)行,逐頁查找”限時(shí)免費(fèi)“番劇
查找完成,輸出找到的”限時(shí)免費(fèi)“番劇
腳本
javascript: (function() {var free_animation = [];function find_free_animation() {var current_page = document.getElementsByClassName('p active')[0].text;var span = document.getElementsByClassName('corner-tag badge_3');for (let i = 0; i < span.length; i++) {let title = span[i].parentElement.nextElementSibling.text;let animation = {title: title, page: current_page};console.log(animation);free_animation.push(animation);}nextPage = document.getElementsByClassName('p next-page')[0];if (nextPage) {nextPage.click();setTimeout(find_free_animation, 1000);} else {console.log(free_animation)}}find_free_animation();
})();
?
?
?