cityscapes数据集下载地址
解决的问题
cityscapes不支持迅雷下载,因为在下载的时候做了请求头验证,该脚本方便linux环境下用户使用。
爬虫脚本
该脚本基于该博客的代码进行改进,添加进度条方便观察进度。
import requests # pip install requests
import contextlib
import progressbar # pip install progressbar2
def download(url, session_id, save_path):
cookies = {
'PHPSESSID': session_id
}
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.5',
'Connection': 'keep-alive',
'Cookie': f'PHPSESSID={session_id}',
'DNT': '1',
'Host': 'www.cityscapes-dataset.com',
'Referer': 'https://www.cityscapes-dataset.com/downloads/',
'Upgrade-Insecure-Request': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36'
}
res = requests.get(url, headers=headers, cookies=cookies, stream=True)
with contextlib.closing(res) as r:
accepts = 0
bar = progressbar.ProgressBar(maxval=int(r.headers['Content-Length']))
bar.start()
with open(save_path, "wb") as f:
for chunk in res.iter_content(chunk_size=4096):
if chunk:
f.write(chunk)
accepts += len(chunk)
bar.update(accepts)
# 以下参数如何获取后面有说
download(
url='https://www.cityscapes-dataset.com/file-handling/?packageID=14',
session_id='your_PHPSESSID',
save_path='leftImg8bit_sequence_trainvaltest.zip'
)
进度条效果:
数据集下载
目标是下载leftImg8bit_sequence_trainvaltest.zip这个300多G的数据集,save_path填写对应保存路径+文件名,以下是用Chrome浏览器的操作流程。
获取url
- 右键下载链接,点击检查打开控制台
- 查看url
- 复制粘贴到代码上
获取Cookies里的PHPSESSID
- 在控制台点击Network,如果下面没有信息就刷新一下页面,右键Name勾选显示Domain(域名),找到来自www.cityscapes-dataset.com的请求,点击Name那一列的请求。
- 我这里打开的是download的页面,点击它,查看Cookies,找到PHPSESSID,把对应的Value填写到代码里。
- 运行代码
问题合集
- 提示获取长度大于文件总长度,那就是代表PHPSESSID过期了,需要重新获取