Greasy Fork is available in English.

b站空间页面链接收集器

(只是打印出来到控制台)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         b站空间页面链接收集器
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  (只是打印出来到控制台)
// @author       Zszen
// @match        https://space.bilibili.com/*/vide*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    console.log('===抓取所有link z===');
    var tryTimes = 10;
    setTimeout(initMe,500);
    function initMe() {
        var arr = findTags('li', null, 'small-item fakeDanmu-item', null);
        if(arr.length==0 && tryTimes-->0){
            setTimeout(initMe , 500);
            return;
        }
        var links = [];
        for(const unit in arr){
            var a = findTag('a',null,null,null,arr[unit]);
            if(a==null) continue;
            links.push(a.href);
        }
        console.log(links);
    }


    function findTags(tagName,id,className,properties, _parent){
        let pool = [];
        if(_parent==null){
            _parent = document;
        }
        let tags = _parent.getElementsByTagName(tagName)
        for (const unit of tags) {
            if(id!=null && unit.id!=id){
                continue;
            }
            if(className!=null && unit.className!=className){
                continue;
            }
            //console.log(unit.className);
            if(properties!=null){
                let isPass = true;
                for (const key in properties) {
                    if(!unit.hasAttribute(key)){
                        isPass = false;
                        break;
                    }else if(properties[key] && unit.getAttribute(key)!=properties[key]){
                        isPass = false;
                        break;
                    }
                }
                if(!isPass){
                    continue;
                }
            }
            pool.push(unit);
        }
        return pool;
    }

    function findTag(tagName,id,className,properties, _parent){
        // let pool = [];
        if(_parent==null){
            _parent = document;
        }
        //console.log(_parent);
        let tags = null;
        try{
            tags = _parent.getElementsByTagName(tagName)
        }catch(err){
                return tags;
        }
        for (const unit of tags) {
            if(id!=null && unit.id!=id){
                continue;
            }
            if(className!=null && unit.className!=className){
                continue;
            }
            if(properties){
                let isPass = true;
                for (const key in properties) {
                    if(!unit.hasAttribute(key)){
                        isPass = false;
                        break;
                    }else if(properties[key] && unit.getAttribute(key)!=properties[key]){
                        isPass = false;
                        break;
                    }
                }
                if(!isPass){
                    continue;
                }
            }
            return unit;
            // pool.push(unit);
        }
        // return pool;
    }
    // Your code here...
})();