编辑代码

var maxTryTimes=10;var currentTimes=0,pageSize=10,crawNextTryTimes=10,curremtCrawNextTryTimes=0;
function craw() {
    if(isNeedLogin()){
        currentTimes=0;
        curremtCrawNextTryTimes=0;
        pageSize=10;
        window.webkit.messageHandlers.login.postMessage("login");
        return;
    }
    if(isEmptyPage()){
        if(currentTimes > maxTryTimes){
            currentTimes = 0;
            var items=[];
            var info={};
            items.push(info);
            var empty_json=JSON.stringify(items);
            window.webkit.messageHandlers.empty.postMessage(empty_json);
            return;
        }else{
            currentTimes++;
        }
    }

    var items = getDatas();
    if(items) {
        currentTimes = 0;
        window.webkit.messageHandlers.data.postMessage(items);
    }
}

function getDatas(){
    var count = document.getElementsByClassName("item-card").length;
    if(count > 0 && count < pageSize && curremtCrawNextTryTimes < crawNextTryTimes){
        curremtCrawNextTryTimes++;
        crawNext();
        return null;
    }
    pageSize+=count;
    for (var tbc_data = [], index = 1, div_items = document.getElementsByClassName("item-card"), i = 0; i < div_items.length; i++) {
        var div_item = div_items[i];
        if(!div_item.tbdone){
            var item = div_item.$$instance;
            for (var k in item) if ("props" == k) {
                var item_child = item.props.children, child_array = [];
                if (item_child && Array.isArray(item_child)) {
                    for (var m = 0; m < item_child.length; m++) {
                        child_array.push(item_child[m].props.data);
                    }
                    var sub_data = {};
                    var products=[];
                    for (var n = 0; n < child_array.length; n++) {
                        var item_product={},single_item = child_array[n];
                        if(n == 0) {
                            var storage = single_item.storage.cellData[0].fields;
                            if(storage) {
                                sub_data.main_order_id=storage.mainOrderId;
                                sub_data.item_ids=storage.subAuctionIds;
                                sub_data.sub_order_ids=storage.subOrderIds;
                                sub_data.status_code=storage.statusCode;
                            }
                            var cellData = single_item.cell.cellData[1].fields;
                            if(cellData) {
                                sub_data.status_value=cellData.text;
                            }

                        }
                        var cellType = single_item.cell.cellType;
                        if(cellType == "sub") {
                            var cellFields = single_item.cell.cellData[0].fields;
                            for(var c in cellFields) {
                                "pic"==c &&(item_product.pic=cellFields[c]),
                                "quantity"==c&&(item_product.quantity=cellFields[c]),
                                "title"==c&&(item_product.title=cellFields[c]),
                                "priceInfo"==c&&(item_product.price=cellFields[c].promotion);
                            }
                        }
                        item_product.hasOwnProperty("title") && (products.push(item_product));   
                    }
                    sub_data.hasOwnProperty("main_order_id") && (sub_data.items = products,sub_data.index = index, tbc_data.push(sub_data), div_item.tbdone = 1),index += 1;
                }
            }
        }
    }
    var tbc_data_json = JSON.stringify(tbc_data)
    return tbc_data_json;
}

function isNeedLogin(){
    var login = document.getElementsByTagName("iframe")[0];
    if(login && login.hasAttribute("src")){
        var src = login.getAttribute("src");
        if(src.search("login.m.taobao.com")) {
            return true;
        }
    }
    if(document.getElementById("login")){
        return true;
    }
    return false;
}

function isEmptyPage(){
    var empty = document.getElementsByClassName("search-empty");
    return (empty.length>0?true:false);
}

function crawNext(){
    document.querySelector(".main-container").scrollTo(0, document.querySelector(".main-container").scrollHeight);
}