我应该使用JavaScript类吗?

时间:2018-05-04 08:09:23

标签: javascript web-scraping

我正在尝试制作Chrome插件,进行一些网页抓取并显示信息。我对编程很陌生,我通常会用函数做所有事情,这是我第一次尝试使用类。我有这个代码可以工作,我只是想知道我是否确实实现了它。 新闻和交易方法正在做与引用方法相同的事情,但不同的来源,所以我把它切掉,所以不会那么多的代码。 我可以对此代码有什么改进? 在代码中我使用Plugin.random看起来很奇怪,它是如何使用的?我尝试this.random并抛出错误。

class Plugin {
    static random(min, max) {
        return Math.random() * (max - min) + min;
    }
    get deals(){
        return this.getDeals();
    }
    get news(){
        return this.getNews();
    }
    get quote(){
        return this.getQuote();
    }
    getDeals() {
        request.open('GET', url, true);
        request.send();
    }
    getNews() {
        request.open('GET', url, true);
        request.send();
    }
    getQuote() {
        for(let i = 10; i > 0; i--) {
            let page = Math.round(Plugin.random(1, 22));
            if (page !== 17) {
                var url = 'https://www.somesite.com?page=' + page;
                break;
            }
        }
        let request = new XMLHttpRequest();
        request.onload = function(event) {
        let parser = new DOMParser();
        let xmlDoc = parser.parseFromString(request.response,"text/html");
        for(let i = 25; i > 0; i--) {
            let nr = Math.round(Plugin.random(1, 24));
           if(xmlDoc.getElementsByClassName("quoteText")[nr].innerHTML.length < 600) {
                var quote = xmlDoc.getElementsByClassName("quoteText")[nr].innerHTML.split('"')[0].split('<br>')[0];
                let title = xmlDoc.getElementsByClassName("quoteText")[nr].getElementsByClassName("authorOrTitle")[0].innerHTML;
              break;
           }
        }
        document.getElementById('beforeand').insertAdjacentHTML('beforeend',quote.substr(8).slice(0, -4) + '<br><p class="author">' + title + '</p>');
        };
        request.open('GET', url, true);
        request.send();
    }
}

const test = new Plugin();
test.quote;
test.news;
test.deals;

0 个答案:

没有答案