当前位置: 首页>Python>正文

可以用python寫網頁嗎,有關python的比賽_用 Python 寫一個 Kaggle 比賽排行榜的爬蟲

可以用python寫網頁嗎,有關python的比賽_用 Python 寫一個 Kaggle 比賽排行榜的爬蟲

長久以來,我和小伙伴們都被 Kaggle 網站的加載速度困擾著,比如最近在用 Kaggle 上的數據集測試模型效果時,遇到排行榜(Leaderboard)刷新困難的問題。于是我們開始探索解決方案。

首先嘗試直接使用頁面鏈接進行數據爬取,很明顯爬不到,因為 Kaggle 的數據是異步響應的。于是我打開 Leaderboard 頁面的開發者工具,以著名的 Titanic 競賽的排行榜為例,打開 Network 選項,查看 XHR 項,然后 ctrl+R 刷新頁面,可以看到如下列表:

我用紅框圈起來的這個就是我們要找的排行榜數據,點擊它后可以看到它的 Request URL 如下:

然后把這個鏈接復制到瀏覽器打開,就可以看到一大段 JSON 形式的排行榜數據:

這里推薦使用在線 JSON 校驗格式化工具 Be JSON 來將這些數據重新排版,只需要粘貼過去使用“格式化校驗”功能,就可以通過更好的排版方式來查看數據了。然后我們很容易看出,整個結果是一個大的字典,里面包含著小字典:submissions:其中又包含若干個小字典,每個字典存儲一個隊伍的信息及其戰績,包括名次、隊名、分數、提交次數、最后一次提交時間等

beforeUser:包含前50名隊伍的信息及戰績

可以用python寫網頁嗎。afterUser:包含50名以后的全部隊伍信息及戰績

而我們只需要解析出 beforeUser 和 afterUser 中的數據就可以了,下面是具體的實現過程。

首先確定自己想要抓取 public 榜還是 private 榜,只有已經結束的比賽才公開了 private 榜,否則只能抓到 public 榜。具體抓數據代碼如下:

import urllib3 # pip install -i https://pypi.anaconda.org/pypi/simple urllib3

青少年python編程競賽,if type == 'public':

url = 'https://www.kaggle.com/c/{competition}/leaderboard.json?includeBeforeUser=true&includeAfterUser=true'.format(

competition=competition)

elif type == 'private':

爬蟲比賽?url = 'https://www.kaggle.com/c/{competition}/leaderboard.json?includeBeforeUser=true&includeAfterUser=true&type=private'.format(

competition=competition)

else:

print('榜單類型有誤,請檢查')

python和c++學哪個好,http = urllib3.PoolManager()

response = http.request('GET', url)

然后對抓取到的數據進行解析,取出我們需要的信息,構成更易讀的 dataframe 形式:

import pandas as pd

編程比賽,import json

ranks0 = str(response.data).replace("\\", "")

ranks1 = json.loads(ranks0[2:-1])['beforeUser']

ranks2 = json.loads(ranks0[2:-1])['afterUser']

用python寫一個網站、ranks = ranks1 + ranks2

team_list = list(ranks)

rank_score = pd.DataFrame(columns=['rank', 'teamName', 'entries', 'lastSubmission', 'score'])

for team in team_list:

用python寫網絡爬蟲、rank = team.get('rank')

teamName = team.get('teamName')

entries = team.get('entries')

lastSubmission = team.get('lastSubmission')

python競賽、score = team.get('score')

rank_score = rank_score.append(

{'rank': rank, 'teamName': teamName, 'entries': entries, 'lastSubmission': lastSubmission, 'score': score},

ignore_index=True)

rank_score

至此,我們就得到一個比賽的全部排行榜數據啦,封裝好的代碼請移步 Github,下載項目后直接在命令行執行:

python main.py titanic private

python main.py titanic public

就可以把排行榜數據作為 csv 文件存到本地啦。

分享更多關于數據挖掘的有趣內容,歡迎大家關注公眾號「數據池塘」:

https://www.nshth.com/python/338559.html
>

相关文章:

  • 可以用python寫網頁嗎
  • 青少年python編程競賽
  • 爬蟲比賽
  • python和c學哪個好
  • 編程比賽
  • 用python寫一個網站
  • 用python寫網絡爬蟲
  • Python競賽
  • 國二python難嗎,python字符串(二)
  • 電腦軟件下載app,在電腦上體驗了 16 款手機 App 后,我很失望
  • elasticsearch中文文檔,Elastic安全分析新利器 —— Event Query Language (EQL) 介紹
  • 數據結構與算法python,[FreeCodeCamp筆記] Python 數據結構和算法1 二分搜索 Binary Search
  • 黑蘋果macOS系統鏡像工具,MacOS Monterey 12.2.1 (21D62) OC 0.7.8 / Cl 5144 / PE 三分區原版黑蘋果鏡像
  • 51單片機畢業設計論文,【畢業設計】基于單片機無線充電的4軸飛行器 -物聯網 嵌入式 stm32
  • 數據庫基礎知識整理,數據庫筆記整理
  • python運行不報錯又無任何結果輸出,linux 正確錯誤輸出_報告錯誤的正確方法
  • 計算機組成原理第六版課后答案,杭電計算機組成原理實驗九R-I,杭電計組實驗9-實現R-I型指令的CPU設計實驗.doc
  • python面向對象,Python零基礎速成班-第10講-Python面向對象編程(下),Property屬性、特殊方法、設計模式、鏈表應用
  • 數據庫視圖是什么,【SpringMVC】SpringMVC模型數據+視圖解析器
  • mp3格式轉換器,FFmpeg支持的音頻和視頻編解碼格式
  • 音樂學校招生要求,學校的音樂樓
  • c語言輸入兩個數輸出較大數,C語言求兩個數的較大值
  • 定義一個函數求三個數的最大值,輸入兩個整數,要求輸出其中值較大者。要求用函數求出最大值
  • MySQL學習 DAY1
  • 一個眼神一個微笑就讓人滿足,看得到的微笑
  • centos7安裝MySQL,centos7下載spark連接mysql數據庫提取數據(pyspark,Scala,python獨立執行)
  • node.js開發,從零開始nodejs系列文章-nodejs到底能干什么
  • python控制軟件自動化,Python實現網站自動登錄---傻瓜教程
  • get all of,resent = msg.get_all('Resent-Date') AttributeError: 'str' object h
  • opencv人體動作識別,torchvision使用keypoint rcnn 進行人體關鍵點定位
  • 深度卷積神經網絡原理與實踐,卷積神經網絡resent網絡實踐
  • 服務器,win服務器系統路由器,Windows server 2012 之路由功能
  • 小青蛙走迷宮的問題
  • 漢諾塔-小青蛙
  • 小青蛙oracle跟蹤,在小青蛙TOAD中用oracle語句寫
  • 音頻頻譜分析儀安卓版,[Android]自定義繪制一個簡易的音頻條形圖,附上對MP3音頻波形數據的采集與展現
  • 連乘符號∏的運算法則,∏這個是什么符號?
  • 用例失敗jenkins卻構建成功,jenkins 構建異常_jenkins構建失敗的原因是什么?