编写脚本下载gazebo仿真器公开的模型数据集

2024-01-21 13:52

本文主要是介绍编写脚本下载gazebo仿真器公开的模型数据集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编写脚本下载gazebo仿真器公开的模型数据集

  • 问题描述
  • 解决步骤
    • 找到url
    • 提取 name 和 owner,并格式化 URL
    • 编写代码
  • 运行效果

问题描述

编写脚本把gazebo仿真器公开的模型数据集中的所有的models和worlds下载收集。每个模型页面有下载链接,不过页面元素是动态生成的,需要用selenium库模拟点击动作。

解决步骤

找到url

进入gazebo官方网站,点击进入
点击models,进入models模块
在这里插入图片描述
进入models界面后,下拉选择“100”,表示该界面可包含100个模块
在这里插入图片描述

鼠标点击右键,点击“检查”
在这里插入图片描述
按图中所示进行点击,随后并按住”CTRL R"进行刷新
在这里插入图片描述
找到url,并复制
在这里插入图片描述

提取 name 和 owner,并格式化 URL

在这里插入图片描述
name+owner作为每个模块的唯一标识符

编写代码

import requests
from urllib.parse import quote
# 请求的 URL
# page可以自己更改,比如下载完1页后,改为2进行下载第2页,以此类推下载所有,per_page=100代表的是整个页面含有100个模块
url = "https://fuel.gazebosim.org/1.0/models?page=1&per_page=100"# 发送请求并获取响应
response = requests.get(url)# 解析 JSON 数据
data = response.json()# 创建一个空数组来存储格式化后的 URL
formatted_urls = []# 遍历每个元素,提取 name 和 owner,并格式化 URL
for item in data:name = item.get('name', '')name = quote(name)owner = item.get('owner', '')owner = quote(owner)formatted_url = f"https://app.gazebosim.org/{owner}/fuel/models/{name}"formatted_urls.append(formatted_url)# 打印结果
for url in formatted_urls:print(url)#模拟下载
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time
# 配置 Chrome 以自动处理下载
options = Options()
prefs = {"download.default_directory" : "D:\\Code\\models13","download.prompt_for_download": False,"download.directory_upgrade": True}
options.add_experimental_option("prefs", prefs)# 初始化 WebDriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
# 设置显式等待
wait = WebDriverWait(driver, 10)  # 最多等待10秒# 遍历 URL 列表
#for url in formatted_urls:
#    driver.get(url)
# 循环打开新标签页并加载URL
i = 0
for url in formatted_urls:# 执行JavaScript来在当前窗口中打开新标签页driver.execute_script('window.open()')# 切换到新打开的标签页driver.switch_to.window(driver.window_handles[-1])# 加载URL到新标签页driver.get(url)# time.sleep(5)  # 例如等待 10 秒# 找到下载按钮并点击# 等待下载按钮出现并可点击download_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[title='Download this model']")))# 点击下载按钮download_button.click()# 这里你可以添加适当的延时等待下载完成# 在控制台输出正在下载的文件信息print(f"正在下载:{url}")i+= 1print(i)# 等待下载完成或者加入适当的延时# time.sleep(10)  # 例如等待 10 秒
# 关闭浏览器
#driver.quit()
inp=input("按回车键结束程序! ")

运行效果

脚本运行,数据集自行下载到指定文件夹
在这里插入图片描述
已经显示访问了100个模块的所有界面了
在这里插入图片描述

但需要等所有100个模块数据集下载完成才可结束程序,不然有的数据集还没下载完成。
在这里插入图片描述
已经显示100个模块的数据集已经全部下载完成,这时可以进行结束程序。
在这里插入图片描述
接下来,可以进行下载第二页的100个模块的数据集,只需要修改代码中的page=2即可,随后几页的数据集以此类推即可完成全部的下载。
在这里插入图片描述

这篇关于编写脚本下载gazebo仿真器公开的模型数据集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629751

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Java下载文件中文文件名乱码的解决方案(文件名包含很多%)

《Java下载文件中文文件名乱码的解决方案(文件名包含很多%)》Java下载文件时,文件名中文乱码问题通常是由于编码不正确导致的,使用`URLEncoder.encode(filepath,UTF-8... 目录Java下载文件中文文件名乱码问题一般情况下,大家都是这样为了解决这个问题最终解决总结Java下

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt