HTML应用指南:利用GET请求获取全国特斯拉充电桩位置

随着电动汽车的普及,充电基础设施的建设变得至关重要。作为电动汽车领域的先驱,特斯拉不仅在车辆技术创新上持续领先,还积极构建广泛的充电网络,以支持其不断增长的用户群体。为了提升用户体验和服务质量,开发人员和数据分析师经常需要访问特斯拉充电桩的位置信息,并将其集成到导航系统、移动应用或网站中。

本篇文章,我们将探究GET请求的实际应用,我们使用Python的requests库通过GET请求,从特斯拉官方API获取充电桩位置信息,深入讲解如何构造请求、解析响应数据以及实现数据可视化,通过可视化分析来实现特斯拉在我国的分布情况。

特斯拉官方网址:https://www.tesla.cn/

接下来就是数据获取部分,先讲一下方法思路,一共三个步骤;

方法思路

  1. 获取所有location_id 列表,另存为csv;
  2. 根据每个location_id 查询相关标签数据;
  3. 坐标转换,BD09转WGS84;

第一步:我们先找到对应数据存储位置,获取所有location_id 列表,另存为csv;

完整代码#运行环境 Python 3.11

import requests
import pandas as pd
from requests.adapters import HTTPAdapter, Retry# 设置请求参数和URL
url = "https://www.tesla.cn/cua-api/tesla-locations"
params = {"translate": "zh_CN","map": "baidu","usetrt": "true"
}# 设置完整的请求头headers = {"Cookie": "YOUR_COOKIE_HERE",  # 替换为您的Cookie"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}# 创建会话并配置重试策略
session = requests.Session()
retries = Retry(total=5, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
adapter = HTTPAdapter(max_retries=retries)
session.mount('https://', adapter)try:# 发送GET请求response = session.get(url, params=params, headers=headers, timeout=10)# 检查请求是否成功if response.status_code == 200:# 解析JSON响应data = response.json()# 检查响应是否为列表if isinstance(data, list):# 提取所有location_idlocation_ids = [item.get('location_id') for item in data if 'location_id' in item]# 创建DataFramedf = pd.DataFrame(location_ids, columns=['location_id'])# 保存为CSV文件csv_filename = 'tesla_locations.csv'df.to_csv(csv_filename, index=False, encoding='utf-8-sig')print(f"已成功保存 {len(location_ids)} 个location_id到文件: {csv_filename}")else:print("API响应不是预期的列表格式")print(f"响应内容: {response.text}")else:print(f"请求失败,状态码: {response.status_code}, 响应内容: {response.text}")except requests.exceptions.RequestException as e:print(f"请求过程中发生错误: {e}")

我们就会到一个全国所有特斯拉旗下的,包括体验店和展厅、超级充电站、服务中心、目的地充电、钣喷中心的位置坐标的表格tesla_locations.csv;

第二步:我们发现点击一个任意图标,就会生成新的一个链接,在链接中我们就可以获得对应标签数据,来看一下链接的规律,不同点就是location_id的不同值,我们通过遍历所有的location_id,就可以获得所有的标签数据,;

完整代码#运行环境 Python 3.11

import requests
import pandas as pd
import json
from datetime import datetime
import time
import random
import mathdef bd09_to_wgs84(bd_lon, bd_lat):"""百度坐标系(BD-09)转WGS84坐标系"""x_pi = 3.14159265358979324 * 3000.0 / 180.0x = float(bd_lon) - 0.0065y = float(bd_lat) - 0.006z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * x_pi)theta = math.atan2(y, x) - 0.000003 * math.cos(x * x_pi)wgs_lon = z * math.cos(theta)wgs_lat = z * math.sin(theta)return wgs_lon, wgs_lat# 读取已有的 CSV 文件
df = pd.read_csv('D:\\data\\tesla_locations.csv')
locations_list = []# 设置请求头headers = {"Cookie": "YOUR_COOKIE_HERE",  # 替换为您的Cookie"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"}# 遍历CSV中的每个location_id
for index, row in df.iterrows():location_id = row['location_id']# 构建请求的 URLurl = f"https://www.tesla.cn/cua-api/tesla-location?id={location_id}&map=baidu"# 随机延时 1-3 秒delay = random.uniform(1, 3)print(f"等待 {delay:.2f} 秒...")time.sleep(delay)# 发送 GET 请求try:response = requests.get(url, headers=headers)print(f"正在处理第 {index + 1}/{len(df)} 个位置,ID: {location_id}")if response.status_code == 200:try:data = response.json()# 获取百度坐标bd_lon = data.get("longitude")bd_lat = data.get("latitude")# 转换为WGS84坐标if bd_lon and bd_lat:wgs84_lon, wgs84_lat = bd09_to_wgs84(bd_lon, bd_lat)else:wgs84_lon, wgs84_lat = None, Nonelocation_info = {"location_id": data.get("location_id"),"title": data.get("title"),"address": data.get("address"),"city": data.get("city"),"province_state": data.get("province_state"),"country": data.get("country"),"bd_longitude": bd_lon,  # 百度坐标"bd_latitude": bd_lat,  # 百度坐标"wgs84_longitude": wgs84_lon,  # WGS84坐标"wgs84_latitude": wgs84_lat,  # WGS84坐标"postal_code": data.get("postal_code"),"directions_link": data.get("directions_link"),"location_type": data.get("location_type", []),"functions_names": data.get("functions_names", [])}locations_list.append(location_info)print(f"成功获取: {location_info['title']}")except json.JSONDecodeError:print(f"ID {location_id} 的响应内容不是有效的JSON格式")else:print(f"请求ID {location_id} 失败,状态码: {response.status_code}")except Exception as e:print(f"处理ID {location_id} 时发生错误: {str(e)}")# 保存结果
try:current_time = datetime.now().strftime('%Y%m%d_%H%M%S')filename = f'tesla_locations_detail_{current_time}.csv'df_result = pd.DataFrame(locations_list)df_result.to_csv(filename, index=False, encoding='utf-8-sig')print(f"\n成功保存 {len(locations_list)} 条数据到 {filename}")
except Exception as e:print(f"保存文件时发生错误: {str(e)}")

到这里数据就下载完成了,我们就得到了一个完整的包括特斯拉充电桩位置及其其他标签的csv;

第三步:坐标系转换,因为数据用的是百度坐标系(BD09),我们需要把转换成wgs84坐标系在argis上展示才不会偏移,我们把csv的坐标列手动分列一下,并把坐标从百度坐标系(BD09)转到WGS84,批量转换工具:地图坐标系批量转换 - 免费在线工具 (latlongconverter.online),这里在讲一个热知识,目前国内主要有以下三种坐标:

WGS84:一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系;

GCJ02:又称火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系;

BD09:百度地图所使用的坐标体系,是在火星坐标系的基础上又进行了一次加密处理;

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3830.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用

提升数据质量:质量评估与改进策略 引言:数据质量的概念 在大数据时代,数据的质量直接影响到数据分析的准确性和可靠性。数据质量是指数据在多大程度上能够满足其预定用途,确保数据的准确性、完整性、一致性和及时性是数据质量的…

OpenVela——专为AIoT领域打造的开源操作系统

目录 一、系统背景与开源 1.1. 起源 1.2. 开源 二、系统特点 2.1. 轻量化 2.2. 标准兼容性 2.3. 安全性 2.4. 高度可扩展性 三、技术支持与功能 3.1. 架构支持 3.2. 异构计算支持 3.3. 全面的连接套件 3.4. 开发者工具 四、应用场景与优势 4.1. 应用场景 4.2. …

寒假1.18

web(报错注入) [第一章 web入门]SQL注入-2 题解: 打开是个403界面,还以为没开成 通过题目提示,访问/login.php /user.php 合在一起访问屁都没有,分开访问,/login.php回显: /user.p…

如何通过 Apache Airflow 将数据导入 Elasticsearch

作者:来自 Elastic Andre Luiz 了解如何通过 Apache Airflow 将数据导入 Elasticsearch。 Apache Airflow Apache Airflow 是一个旨在创建、安排(schedule)和监控工作流的平台。它用于编排 ETL(Extract-Transform-Load&#xff0…

企业分类相似度筛选实战:基于规则与向量方法的对比分析

文章目录 企业表相似类别筛选实战项目背景介绍效果展示基于规则的效果基于向量相似的效果 说明相关文章推荐 企业表相似类别筛选实战 项目背景 在当下RAG(检索增强生成)技术应用不断发展的背景下,掌握文本相似算法不仅能够助力信息检索&…

Jenkins-Pipeline简述

一. 什么是Jenkins pipeline: pipeline在jenkins中是一套插件,主要功能在于,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline的实现方式是一套Groovy DSL,任何发布流程…

基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多,这里面有高、中、低档,开发方式也不相同。之所以会这样,有价格的因素&am…

C# 修改项目类型 应用程序程序改类库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

6、原来可以这样理解C语言_函数(1/8)函数的概念

目录 一、函数的概念 一、函数的概念 数学中我们其实就⻅过函数的概念,⽐如:⼀次函数 ykxb ,k和b都是常数,给⼀个任意的x,就 得到⼀个y值。 其实在C语⾔也引⼊函数(function)的概念&#xff0c…

Excel 技巧10 - 如何检查输入重复数据(★★)

本文讲了如何在Excel中通过COUNTIF来检查输入重复数据。 当输入重复数据时,显示错误提示。 1,通过COUNTIF来检查输入重复数据 比如下面是想检查不要输入重复的学号。 选中C列,点 Menu > 数据 > 数据验证 在数据验证页面&#xff0c…

【Linux系统】Ext系列磁盘文件系统二:引入文件系统(续篇)

inode 和 block 的映射 该博文中有详细解释:【Linux系统】inode 和 block 的映射原理 目录与文件名 这里有几个问题: 问题一: 我们访问文件,都是用的文件名,没用过 inode 号啊? 之前总是说可以通过一个…

[计算机网络]一. 计算机网络概论第一部分

作者申明&#xff1a;作者所有文章借助了各个渠道的图片视频以及资料&#xff0c;在此致谢。作者所有文章不用于盈利&#xff0c;只是用于个人学习。 1.0推荐动画 【网络】半小时看懂<计算机网络>_哔哩哔哩_bilibili 1.1计算机网络在信息时代的作用 在当今信息时代&…

Python操作Excel——openpyxl使用笔记(2)

2. 操作工作表 前面提到一个工作簿中会有一个或者多个工作表&#xff0c;当前使用的工作表被称作活动工作表&#xff0c;这里展开介绍一下对于工作表的一些操作。 2.1 枚举所有工作表 使用for循环可以很方便的遍历每个工作表&#xff1a; import openpyxl wb openpyxl.o…

Social LSTM:Human Trajectory Prediction in Crowded Spaces | 文献翻译

概要 行人遵循不同轨迹以避免障碍物和容纳同行者。任何在这种场景中巡航的自动驾驶车辆都需要能够遇见行人的未来位置并相应地调整其路线以避免碰撞。轨迹预测问题能够被看作一个顺序生成任务&#xff0c;其中我们对基于行人过去的位置预测其未来的轨迹感兴趣。根据最近RNN&am…

从零开始:Gitee 仓库创建与 Git 配置指南

引言 Git 是一款广泛使用的版本控制工具&#xff0c;它能够帮助开发者在开发过程中高效地管理代码的版本。而 Gitee&#xff08;码云&#xff09;是国内知名的 Git 托管平台&#xff0c;它提供了强大的代码托管、团队协作和项目管理功能。如果你是 Git 和 Gitee 的新手&#x…

挖掘机检测数据集,准确识别率91.0%,4327张原始图片,支持YOLO,COCO JSON,PASICAL VOC XML等多种格式标注

挖掘机检测数据集&#xff0c;准确识别率91.0%&#xff0c;4327张图片&#xff0c;支持YOLO&#xff0c;COCO JSON&#xff0c;PASICAL VOC XML等多种格式标注 数据集详情 数据集分割 训练组70&#xff05; 3022图片 有效集20&#xff05; 870图片 测试集10&…

CV 图像处理基础笔记大全(超全版哦~)!!!

一、图像的数字化表示 像素 数字图像由众多像素组成&#xff0c;是图像的基本构成单位。在灰度图像中&#xff0c;一个像素用一个数值表示其亮度&#xff0c;通常 8 位存储&#xff0c;取值范围 0 - 255&#xff0c;0 为纯黑&#xff0c;255 为纯白。例如&#xff0c;一幅简单的…

QT 使用QTableView读取数据库数据,表格分页,跳转,导出,过滤功能

文章目录 效果图概述功能点代码分析导航栏表格更新视图表格导出表格过滤 总结 效果图 概述 本案例用于对数据库中的数据进行显示等其他操作。数据库的映射&#xff0c;插入等功能看此博客框架&#xff1a;数据模型使用QSqlTableModel&#xff0c;视图使用QTableView&#xff0…

UI自动化测试:异常截图和page_source

自动化测试过程中&#xff0c;是否遇到过脚本执行中途出错却不知道原因的情况&#xff1f;测试人员面临的不仅是问题的复现&#xff0c;还有对错误的快速定位和分析。而异常截图与页面源码&#xff08;Page Source&#xff09;的结合&#xff0c;正是解决这一难题的利器。 在实…

Spark常见面试题-部分待更新

1. 简述hadoop 和 spark 的不同点&#xff08;为什么spark更快&#xff09; Hadoop是一个分布式管理、存储、计算的生态系统&#xff0c;包括HDFS&#xff08;分布式文件系统&#xff09;、MapReduce&#xff08;计算引擎&#xff09;和YARN&#xff08;资源调度器&#xff09;…