iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
0
自我挑戰組

從爬蟲到架站系列 第 17

Day 16: 從爬蟲到架站-年度數據實作

  • 分享至 

  • xImage
  •  

今天的這個功能相比近況來講簡單許多,他只需要一行就好,所以不需要雙層迴圈。

index.html

 <p>
    <h2 class="mb-0">
        <button class="btn btn-secondary btn-lg btn-block" type="button" data-toggle="collapse"
            data-target="#year_table"
            aria-expanded="false" aria-controls="year_table">
            年度數據
        </button>
    </h2>
</p>
<div class="collapse" id="year_table">
    <table id="year_stat_table" class="table">
        <thead>

        </thead>
        <tbody></tbody>
    </table>
</div>

js的部分,可能可以把中間一些重複的code包成另一個function

function get_year(){
    let p = document.getElementById("player").value;
    if(p!=='選擇球員'){
        let recent_table_head = $('#year_stat_table > thead');
        let recent_table_body = $('#year_stat_table > tbody');
        $.ajax({
            type: 'POST',
            url: "/get_year",
            data: { "p": p },
            success: function (result) {
                year_table_head.empty();
                year_table_body.empty();
                let head = ['PA', 'AB', 'RBI', 'R', 'H', '2B', '3B', 'HR', 'SO', 'SB', 'CS', 'AVG', 'OBP', 'SLG'];
                let tr = $('<tr/>');
                for(let i = 0; i < head.length; i++){
                    let th = $('<th/>', {
                        scope: 'col',
                        text: head[i]
                    });
                    tr.append(th);
                }
                year_table_head.append(tr);


                let year_body_tr = $('<tr/>');
                for(let type in head){
                    let year_body_th = $('<th/>', {
                        scope: 'col',
                        text: result[head[type]]
                    });
                    year_body_tr.append(year_body_th);
                }
                year_table_body.append(year_body_tr);
                
            }
        });
    }
}

app.py

@app.route('/get_year', methods=['POST'])
def get_year():
    player = str(request.form.getlist('p')[0])
    stat = get_hitter_stat(player)
    if stat:
        return jsonify(stat['年度'])
    else:
        return redirect(url_for('index'))

下一個功能是球隊勝率折線圖,這個功能可能會寫慢一點。


上一篇
Day 15: 從爬蟲到架站-爬取年度數據
下一篇
Day 17: 從爬蟲到架站-隊伍勝率
系列文
從爬蟲到架站21
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言