Cityscapes数据简介以及使用爬虫下载Cityscapes数据(适用于Windows)

# 需要爬取一些需要的数据集,但是初次接触爬虫,所以没有头绪。

# 找到一篇博文提供了一个脚本方便linux环境下用户使用,在此对该脚本进行更改,以适用Windows用户。

# 本文附上脚本源码,以及所需参数如:url、PHPSESSID等的查找方法。

目录

1.为什要使用爬虫?

2.Cityscapes数据简介

3.爬虫下载Cityscapes数据

3.1 爬虫脚本

3.2 下载参数的介绍以及查找方法

3.2.1 查找url参数

3.2.2 获取Cookies里的PHPSESSID参数

3.2.3 设置文件的输出路径


1.为什要使用爬虫?

        因为打开cityscape官网进行注册之后,发现是可以直接下载数据的,所以就思考,为什么可以直接下载了,还要用爬虫呢?事实上也是如此,尽管某些网站提供直接下载大文件的选项,但仍然存在一些情况,使用爬虫进行下载可能更为方便或者必要,以下是我总结的几点:

(1)下载速度问题:直接通过网页下载大文件可能会因为服务器带宽限制而导致下载速度较慢。使用爬虫可以通过多线程或者多进程等技术提高下载速度,从而更快地获取文件。

(2)断点续传和自动化: 一些网站可能不支持断点续传,如果下载过程中出现网络中断或其他问题,可能需要重新下载整个文件。而使用爬虫可以实现断点续传功能,从而节省时间和带宽资源。此外,通过编写脚本,可以实现自动化下载,无需手动点击下载按钮。

(3)程序化处理:爬虫可以将文件下载与后续的数据处理流程进行无缝连接,实现自动化处理流程。这在需要定期获取大量数据的情况下尤为重要。

(4)访问控制和限制:有些网站可能会对下载进行限制,例如需要登录、有下载配额限制、有验证码等。使用爬虫可以更灵活地处理这些访问控制和限制,从而更方便地获取所需数据。

(5)数据备份和镜像:有些网站提供的数据可能会因为各种原因不再提供或者删除,通过爬虫可以将数据备份到本地或者其他存储介质,保证数据的长期可用性。

2.Cityscapes数据简介

        Cityscapes是一个用于语义理解和物体检测的大规模数据集,专门用于城市场景分析。该数据集由德国达姆施塔特大学的计算机视觉实验室(Computer Vision Lab)创建。Cityscapes数据集包含了来自各种城市的高分辨率图像,这些图像经过像素级别的标注,用于识别和分类城市场景中的各种物体,例如汽车、行人、道路、建筑物等。该数据集还提供了不同天气条件下的图像,如晴天、雨天和雪天,以及昼夜不同时间的图像,使得模型可以在各种环境条件下进行训练和测试。

        Cityscapes数据集的主要特点包括

(1)大规模和高分辨率:Cityscapes数据集包含了大量的高分辨率图像,每张图像的分辨率为1024x2048像素,这使得数据集可以用于训练和评估各种复杂的深度学习模型。

(2)像素级别标注:每张图像都进行了像素级别的标注,标注了各种物体和场景的类别信息,如汽车、行人、道路、建筑物等,以及这些物体的边界框信息。

(3)多样性的城市场景:Cityscapes数据集包含来自30个不同城市的图像,涵盖了各种不同的城市场景,包括城市中心、郊区、道路、公园等。

(4)不同环境条件下的图像:数据集提供了不同天气条件(晴天、雨天、雪天)和不同时间(昼夜)下的图像,使得模型可以更好地适应各种环境条件。

(5)用途广泛:Cityscapes数据集可用于多种计算机视觉任务,如语义分割、实例分割、物体检测等,是研究和开发城市场景理解相关算法的重要数据资源。

总的来说,Cityscapes数据集是一个用于城市场景理解和计算机视觉研究的重要资源,具有广泛的应用前景,包括自动驾驶、智能交通、城市规划等领域。

3.爬虫下载Cityscapes数据

3.1 爬虫脚本

import os  
import requests  
import contextlib  
from tqdm import tqdm  
  
  
# 定义一个函数`download`,用于下载文件  
def download(url, session_id, save_path):  
    # 定义请求时所需的cookies和headers信息  
    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 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '  
                      'Chrome/58.0.3029.110 Safari/537.3'    }  
    # 检查文件是否已存在,并获取已下载的部分大小  
    start_pos = 0  
    if os.path.exists(save_path):  
        start_pos = os.path.getsize(save_path)  
        headers['Range'] = f'bytes={start_pos}-'  
  
    # 发送GET请求获取文件,并使用上下文管理器`contextlib.closing`来确保资源的正确释放 
    res = requests.get(url, headers=headers, cookies=cookies, stream=True)  
    with contextlib.closing(res) as r:  
        # 获取文件总大小 
        total_size = int(r.headers.get('content-length'))  
        # 打开文件,写入数据  
        with open(save_path, "wb") as f:  
            # 将已下载的部分大小赋值给accepts  
            accepts = start_pos  
            # 循环遍历响应内容,写入文件并输出下载进度:  
            with tqdm(total=total_size, initial=start_pos, unit='B', unit_scale=True, desc="Downloading", dynamic_ncols=True, leave=False, miniters=-1) as pbar:  
                for chunk in r.iter_content(chunk_size=4096):  
                    if chunk:  
                        f.write(chunk)  
                        # 更新已接受的数据大小,并输出下载进度
                        accepts += len(chunk)  
                        pbar.update(len(chunk))  
  
  
# 调用并传入下载参数  
download(  
    url='https://www.cityscapes-dataset.com/file-handling/?packageID=1',  
    session_id='4sh6mbguup2b8rhft4sk4n5cjq',  
    save_path='./gtFine_trainvaltset.zip'  

3.2 下载参数的介绍以及查找方法

        大部分情况下,大家的目标就是下载leftImg8bit_sequence_trainvaltest.zip这个300多G的数据集,但是我的电脑内存有限,为了给大家演示断点续传,这里选择下载一个较小的文件,但是查找参数的方法是类似的。save_path填写对应保存路径+文件名,以下是用Chrome浏览器的操作流程。

 cityscapes数据集网址Login – Cityscapes Dataset

3.2.1 查找url参数

(1)右键想要下载的数据链接,点击"检查"打开控制台。

(2)在控制台中找到url

        当光标放在包含url的代码部分时,左侧数据集会以蓝色背景被选中,可以确认是否是自己所选的数据集。复制链接并替换上述脚本中最后的url参数。

url='https://www.cityscapes-dataset.com/file-handling/?packageID=1'

3.2.2 获取Cookies里的PHPSESSID参数

        在控制台点击"Network(网络)",如果下面没有信息就刷新一下页面,单击"download/",找到来自www.cityscapes-dataset.com的请求,选择"Cookie"下的"value(值)",复制值的内容并替换上述脚本中最后的PHPSESSID参数。

session_id='4sh6mbguup2b8rhft4sk4n5cjq'

3.2.3 设置文件的输出路径

        可以用相对路径,直接输出到脚本的根目录下:将./gtFine_trainvaltset.zip换成自己的数据集路径即可。

save_path='./gtFine_trainvaltset.zip' 

        最后,运行代码或者在python终端输入:python 脚本名.py 就可以啦。代码中设置了进度条显示数据下载的进程,以及断点之后续传的功能,在一个小文件中试了两次都没问题,如果下载大数据集不放心,可以提前试一下,确保脚本可以断点续传。进度条显示如下:

       在最最后,特别声明,作为一名纯小白,渴望学习新知识,文章中可能出现理解不当的地方,若有所见解或异议可在下方评论,谢谢!!!一起进步吧!!!

引用及参考:

python爬虫下载cityscapes数据集_leftimg8bit_sequence_trainvaltest.zip-CSDN博客

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先需要了解得物网站的数据结构和爬取方式,得物网站比较复杂,需要使用Selenium+BeautifulSoup进行爬取。 以下是一个简单的得物爬虫Python代码实现(注:仅供学习参考,请勿用于商业用途): ```python import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup options = Options() options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在报错的问题 options.add_argument('window-size=1920x3000') # 指定浏览器分辨率 options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面 options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度 options.add_argument('--headless') # 无界面 driver = webdriver.Chrome(options=options) url = 'https://www.dewu.com/' driver.get(url) # 等待页面加载完成 time.sleep(3) # 模拟鼠标点击,展开商品列表 driver.find_element_by_xpath('//div[text()="全部商品"]').click() # 等待页面加载完成 time.sleep(3) # 获取页面源代码 html = driver.page_source # 解析页面 soup = BeautifulSoup(html, 'html.parser') # 获取商品列表 items = soup.find_all('div', {'class': 'item-card'}) for item in items: # 获取商品标题 title = item.find('div', {'class': 'title'}).text.strip() # 获取商品价格 price = item.find('div', {'class': 'price'}).text.strip() # 获取商品链接 link = item.find('a', {'class': 'item-link'})['href'] print(title, price, link) # 关闭浏览器 driver.quit() ``` 这里的代码仅仅是一个简单的爬虫示例,如果想要更加深入地了解得物网站的数据结构和爬取方式,需要结合具体的需求进行更加详细的分析和实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值