Dare To Think, Strive To Execute

Download Dataset From Kaggle

背景以及其他适用范围

  最近调研kaggle比赛的一些情况,因为比赛数据集往往很大,每次通过浏览器下载再上传到服务器是一件十分费力的一件事情,所以我想怎么用wget来直接进行下载。因为kaggle比赛是一个需要用户名登陆,以及含有各种协议的网站,如果不通过浏览器下载wget只会下载一个html的页面。

  怎么通过模拟浏览器来下载这个数据集呢,我查了好多地方,发现wget有个参数 –load-cookies 可以模拟浏览器下载东西。

下载cookies

  打开google浏览器More Tools->Extensions->More Extension, 进入Chrome Web Store下载一个插件cookies.txt.

error

  安装完成以后打开该下载页面,就可以看到cookie文件

error

  复制cookie信息到一个文件cookies.txt中,使用下面的命令就可以顺利下载了。

1
2
wget -x --load-cookies cookies.txt
https://www.kaggle.com/c/digit-recognizer/download/knn_benchmark.csv

怎么使用python下载

1
2
3
4
5
6
7
8
9
10
11
12
13
import shutil
import requests
login_url = 'https://www.kaggle.com/account/login'
download_url = 'https://www.kaggle.com/c/digit-recognizer/download/knn_benchmark.csv'
filename = download_url.split('/')[-1]
login_data = {'UserName':'kaggle_username',
'Password':'kaggle_password'}
with requests.session() as s, open(filename, 'w') as f:
s.post(login_url, data=login_data) # login
response = s.get(download_url, stream=True) # send download request
shutil.copyfileobj(response.raw, f) # save response to file

Reference