Python爬虫下载加州高速路网PeMS交通流量数据集以及交通公开数据集分享

博主分享了一个Python爬虫程序,用于自动化下载PeMS加州高速路网的交通流量数据集,避免手动操作。还提供了部分已下载的数据集、论文和相关交通数据集的链接。更新中包括了数据集的使用说明和代码公开。
摘要由CSDN通过智能技术生成

由于PeMS(PeMS)下载交通数据集一次只能下载一周数据,并且要一次一次的点击,比较麻烦。
故写出了一个小的爬虫程序,自动下载PeMS路网上VDS的数据集(前提需要FQ,需要挂全局代理)
下载为5分钟时间间隔的流量数据,为了防止IP被封,每下载一周 Sleep 15秒,也可自己更改
具体使用只需要更改
文件保存地址:save_path
需要下载的VDS列表:vds_list
下载数据的开始与结束时间: start_time, end_time
以及down_load_data函数中data中登陆PeMS系统的账号与密码

PEMS官网自动下载数据集代码(需FQ

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2019/11/14 21:23
# @Author  : Chenchen Wei
# @Description: 下载PeMS流量数据,一次下载一周数据,并将下载的周数据进行合并

import time
import os
import numpy as np
import pandas as pd
import requests


def time_2_timestamp(input, lags=True):
    """默认True: 时间转化为时间戳, 包含时差计算"""
    if lags:
        timeArray = time.strptime(input, "%Y-%m-%d %H:%M")
        # 转换成时间戳
        return int(time.mktime(timeArray) + 8 * 60 * 60)  # 时差计算
    else:
        time_local = time.localtime(input - 8 * 60 * 60)
        return time.strftime("%Y-%m-%d %H:%M", time_local)


def download(save_path, vds, start_time, end_time):
    """时间转化为时间戳"""
    start_stamp, end_stamp = time_2_timestamp(start_time), time_2_timestamp(end_time)
    i = 1
    for begin in range(start_stamp, end_stamp, 60 * 60 * 24 * 7):
        url = get_url(vds, begin)
        down_load_data(save_path, url, i)
        i += 1
        print('Sleeping...')
        time.sleep(15)  # 下载完成休息五秒


def down_load_data(save_path, url, i):
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                             "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
    data = {"redirect": "", "username": "账号",
            "password": "密码", "login": "Login"}
    session = requests.session()
    response = session.post(url, headers=headers, data=data)
    response = session.get(url)
    with open(save_path + '\\' + str(i) + '.xlsx', 'wb') as f:
        f.write(response.content)
        print('下载成功')


def get_url(vds, begin):
    str_begin = time_2_timestamp(begin, False)
    s_begin = str_begin[5:7] + '%2F' + str_begin[8:10] + '%2F' + str_begin[:4] + '+00%3A00',
    end = begin + 60 * 60 * 24 * 7 - 60
    str_end = time_2_timestamp(end, False)
    s_end = str_end[5:7] + '%2F' + str_end[8:10] + '%2F' + str_end[:4] + '+23%3A59',
    url = 'http://pems.dot.ca.gov/?report_form=1&dnode=VDS&content=loops&export=xls&station_id=' \
          + str(vds) + '&s_time_id=' + str(begin) + '&s_time_id_f=' + str(s_begin) + '&e_time_id=' + str(
            end) + '&e_time_id_f=' + str(s_end) + '&tod=all&tod_from=0&tod_to=0&dow_0=on&dow_1=on&dow_2=on&dow_3=on&dow_4=on&dow_5=on&dow_6' \
            '=on&holidays=on&q=flow&q2=&gn=5min&agg=on&lane1=on&lane2=on&lane3=on&lane4=on'
    # print(url)
    print('获取url: vds[%s] %s --- %s' % (str(vds), str_begin, str_end))
    return url


def combine_download_data(vds, path):
    num = len(os.listdir(path))
    dfs = pd.read_excel(path + '\\1.xlsx', index_col=None).values
    for i in range(2, num + 1):
        df = pd.read_excel(path + '\\' + str(i) + '.xlsx', index_col=None).values
        dfs = np.row_stack((dfs, df))
    pd.DataFrame(dfs).to_csv(path + '\\' + str(vds) + '_combine.csv', index=None, header=None)
    print('合并文件保存成功')


if __name__ == '__main__':
    save_path = r'G:\文档\交通数据集\加州数据集\自动下载数据'  # 文件保存路径
    vds_list = [602467, 602468]  # 需要下载的VDS列表
    start_time, end_time = '2019-01-01 00:00', '2019-01-14 23:59'  # 数据下载开始于结束时间,每次下载一周,无数据则下载为空文件

    for vds in vds_list:
        name = start_time[2:10] + '_' + end_time[2:10]
        save_paths = save_path + '\\' + name + '\\' + str(vds)  # 创建文件保存路径
        if not os.path.exists(save_paths):
            os.makedirs(save_paths)
        print('开始下载:%s   %s---%s' % (str(vds), start_time, end_time))
        download(save_paths, vds, start_time, end_time)  # 下载文件
        combine_download_data(vds, save_paths)  # 将单个VDS下载文件进行合并

2020年6月16日 更新(部分路网数据集)

由于许多同学联系私信寻求数据集,因此在此将本人做研究下载的部分数据集分享出来,希望对大家有帮助:提取密码:lwil

另提供一个自己Fork的Github,里面有部分交通数据集,可自行下载。在这里插入图片描述
由于Github中西雅图数据也存储在谷歌网盘里面,需要FQ,因此在百度网盘中有原始数据集以及按照工作日与休息日划分后的西雅图数据集。
此外,截止目前评论区留邮箱的同学,本人已将数据链接及数据作为附件发送至邮箱,注意查收。

2020年7月18日 更新(论文以及部分数据集)

由于之前百度云失效,抽空更新了下最新的百度云链接:提取码:g8ce
另附上本人最新发表的一篇论文GE-GAN: A novel deep learning framework for road traffic state estimation(TRC),希望对大家有帮助,欢迎引用。

还有本人了解的其他论文中公开的交通数据集及代码此部分数据集均可直接下载:
Diffusion Convolutional Recurrent Neural Network: Data-Driven Traffic Forecasting(DCRNN)
该数据集包含Los Angeles (METR-LA) :207个检测器2012年四个月的数据
the Bay Area (PEMS-BAY):325个检测器2017年6个月的数据

另一个公布数据集与代码的文章为:
Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting (ASTGCN)
该数据集包含:
在这里插入图片描述
同样,已将数据集发送至所有留邮箱的同学。如未收到,可自行下载。
点波关注不迷路,后续如发现新的交通数据集,会不定期更新。。。

2020年11月02日 更新(data中22个检测器的数据补充说明)

很多同学私信询问pems 22条路段的空间关系,在此说明一下,22个检测器是一条道路上的检测器,检测器顺序为文件第一行的检测器编号,即1与2相连,2与1,3相连,3与2,4相连。。。。具体空间关系可以进PEMS官网,搜VDS,会显示具体的经纬度以及检测器之间的空间关系。

关于代码,写的太乱,就不好意思放出来了。。。后续有时间整理在更新吧。

,博客中提到的所有数据集都已经在上面的百度网盘还有github上面分享出来了,大家可以按照需要自行下载的哈。

2020年11月13日 更新(代码公开)

今天抽空重新整理了下代码,目前代码与数据集已公开,详见Github: GE-GAN: A novel deep learning framework for road traffic state estimation(TRC)
同样,已将代码发送至要代码并留邮箱的同学。如未收到,可自行下载。

2020年11月26日 更新(PEMS四部分数据集)

更新高速路网数据集:出处:Spatial-Temporal Synchronous Graph Convolutional Networks: A New Framework for Spatial-Temporal Network Data Forecasting(STSGCN)
百度网盘下载地址:提取码:p40oSTSGCN

### 回答1: PEMS-BAY数据集是一个交通流量数据集,适用于交通预测和控制场景。该数据集覆盖了旧金山湾区的193个道路段,收集了自2017年至2018年的5分钟间隔交通流量数据。这个数据集是在伯克利加州大学的智能交通系统实验室提供的,以帮助研究者更好地理解交通流量的变化和预测。PEMS-BAY数据集下载也非常简单,只需访问该实验室的网站,免费注册并下载即可。 下载PEMS-BAY数据集首先需要进入伯克利加州大学的智能交通系统实验室官网,在该网站的页面上找到PEMS-BAY数据集下载链接。在下载前,需要先注册一个账号,输入注册信息后验证注册邮箱并登录,然后进入设有PEMS-BAY数据集下载页面。在该下载页面上,可以选择下载数据集的所有csv文件或者将其拆分成多个zip文件进行下载,选择后即可开始下载PEMS-BAY数据集的大小为222 MB,根据网络环境和下载速度可能需要不同的时间完成下载。 总的来说,PEMS-BAY数据集下载相对简单,只需注册账号并在官网页面上进行操作即可获取。这个数据集对于进行交通预测和控制等方面的研究具有重要意义,具有很高的实用价值。 ### 回答2: PEMS-BAY数据集是一种交通流量数据集,包括密集区域的拥堵数据,基于17个主要高速公路和城市道路的流量数据,是美国加利福尼亚州东海岸湾区的实时交通快照。 PEMS-BAY数据集可以用于交通预测、交通控制、交通规划等领域的研究。该数据集主要资源是交通流量的数据,通过这些数据可以了解道路状况、交通拥堵情况、车辆速度等交通信息。数据集从2008年1月到2009年1月,多数数据的时间分辨率为5分钟。 为了下载PEMS-BAY数据集,用户可以从美国加利福尼亚大学伯克利分校的交通研究中心(Traffic Research Center)获取。用户需要提供自己的姓名、邮箱、工作单位等相关信息,并且需要签署一个使用协议。一旦获得使用权限,用户可以获得该数据集下载链接,下载数据并在自己的研究中使用。 总之,PEMS-BAY数据集是一种极具实用价值的数据集,可以为交通领域的相关研究提供有力支持和帮助。用户可以通过请求访问并签署相关协议来下载数据集。 ### 回答3: PEMS-BAY数据集是一个基于贝利地区的人工交通数据集,是美国加州交通局的交通研究所发布的。这个数据集包括了由传感器采集的交通流信息,主要包括了车辆数量、速度和密度等数据。这个数据集不仅可以被用于交通流预测,还可以用于交通拥堵分析和交通控制方案制定。 如果你想下载PEMS-BAY数据集,可以访问官方网站进行下载。在官网页面上,你可以找到PEMS-BAY数据集下载链接,以及相关的数据说明文档。数据集下载文件较大,需要耐心等待下载完成。 下载完成后,你可以使用各种数据处理软件进行数据解析和分析。一般可以使用Python或MATLAB等编程语言进行处理分析。通过对PEMS-BAY数据集的分析,可以为城市交通管理及规划等方面提供重要的参考和依据。 总之,PEMS-BAY数据集是一个非常有用的数据资源,可以广泛应用于交通流分析和研究领域,使交通管理工作更加高效和精准。
评论 193
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值