python爬虫下载cityscapes数据集

cityscapes数据集下载地址

https://www.cityscapes-dataset.com/downloads/

解决的问题

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

  1. 右键下载链接,点击检查打开控制台打开检查
  2. 查看url
    查看下载链接
  3. 复制粘贴到代码上

获取Cookies里的PHPSESSID

  1. 在控制台点击Network,如果下面没有信息就刷新一下页面,右键Name勾选显示Domain(域名),找到来自www.cityscapes-dataset.com的请求,点击Name那一列的请求。
    查看开启域名显示
  2. 我这里打开的是download的页面,点击它,查看Cookies,找到PHPSESSID,把对应的Value填写到代码里。
    查看cookie
  3. 运行代码

问题合集

  1. 提示获取长度大于文件总长度,那就是代表PHPSESSID过期了,需要重新获取
    问题1
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex-Leung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值