干货 | Selenium+chrome自动批量下载地理空间数据云影像

1.背景介绍

1.1地理空间数据云

由中国科学院计算机网络信息中心科学数据中心成立的地理空间数据云平台是常见的下载空间数据的平台之一。其提供了较为完善的公开数据,如LANDSAT系列数据,MODIS的标准产品及其合成产品,DEM数据(SRTM 90M,ASTER GDEM 30M),EO-1数据,大气污染插值数据,Sentinel数据,高分一号WFV数据产品,NOAA VHRR 数据产品等。地理空间数据云提供高级检索功能,能够根据数据集、空间位置、时间范围、月份、云量、数据有无进行检索,如图1所示。

图1 地理空间云高级检索功能

1.2 Selenium+Chromedriver

日常工作中经常需要下载多个区域或者长时间段的遥感影像,然而地理空间数据云的高级检索功能中并未提供没有批量下载的功能,人为手动一景一景下载耗时费力。如若能实现数据的自动化批量下载,将会大幅提高工作效率。利用Selenium+ChromeDriver建立爬虫,即可实现自动化批量下载大量数据。

Selenium是一个Web自动化程序,相当于一个机器人,可以模拟并自动处理人类在浏览器上的一些行为,比如点击、填充数据、删除cookie等等一系列操作。Chromedriver是一个驱动chrome浏览器的驱动程序,使用它才可以驱动浏览器。两者结合就能够实现浏览器操作的自动化,简化人力的重复点击劳动。

2.实验操作

2.1环境配置与工具下载

(1)Python没有自带selenium库,需要自行下载,只需要用简单的命令即可实现:

pip install selenium

(2)下载ChromeDriver之前,需要首先确定浏览器的版本,在浏览器中输入chrome://version/,图2红线所示即为浏览器的版本:

图2 浏览器版本查看

(3)接着去下载对应版本的Chromedriver。通常从以下网址下载:

https://npm.taobao.org/mirrors/chromedriver/

2.2浏览器对象创建与网页元素获取

(1)首先导入相关模块,然后创建浏览器对象,指定驱动所在路径,接着打开地理空间数据云的首页。代码如下:

from selenium import webdriver
driver_path = r"F:\Pycharm\GeoCloud\chromedriver.exe"  # 驱动所在路径
browser = webdriver.Chrome(executable_path=driver_path)  # 打开浏览器,指定驱动路径
browser.get('http://www.gscloud.cn/')  # 打开地理空间数据云首页

运行这些代码会打开一个自动控制的浏览器窗口,并显示“Chrome正受到自动测试软件的控制”。

(2)为了模拟我们的点击活动,需要获取感兴趣的网页元素的地址,selenium提供了例如id,name,classname,xpath,linktext的方法获取元素。本实验采取xpath的方法获取需要点击的元素:首先右键点击需要的元素,然后选择检查,在需要的元素上右键复制Xpath,操作步骤如图3所示。

图3 获取元素Xpath

2.3代码实现

配置上述环境之后,下面是具体数据下载的python代码,实现南京地区2000年至今MODIS合成数据集16日的NDVI数据批量下载:

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
import os

driver = webdriver.Chrome(executable_path=r'F:\Pycharm\GeoCloud\chromedriver.exe')
driver.get('http://www.gscloud.cn/accounts/login_user')

email = driver.find_element_by_xpath('//*[@id="email"]')
email.send_keys('***') #账号
password = driver.find_element_by_xpath('//*[@id="password"]')
password.send_keys('***') #密码
captcha = driver.find_element_by_xpath('//*[@id="id_captcha_1"]')
captcha_sj = input('请输入验证码:').strip()
captcha.send_keys(captcha_sj)

# 模拟点击过程
dr_buttoon = driver.find_element_by_xpath('//*[@id="btn-login"]').click() #输入验证码后点击登入按钮
time.sleep(3)
gjjs = driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[2]/ul/li[2]').click() #点击高级检索
time.sleep(3)
dataset = driver.find_element_by_xpath('//*[@id="dataset-btn"]').click()   #选择数据集
time.sleep(0.5)
plus = driver.find_element_by_xpath('//*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[2]/span[1]').click()  #点击加号
time.sleep(0.5)
select = driver.find_element_by_xpath('//*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[2]/ul/li[16]/div/label').click()  #点击数据集
time.sleep(0.5)
queding = driver.find_element_by_xpath('//*[@id="all-datasets-dlg"]/div/div[3]/button[2]').click()  #确定
time.sleep(0.5)
dituxuanze = driver.find_element_by_xpath('//*[@id="condition-panel"]/div[2]/div[2]/div').click()  #地图选择
time.sleep(0.5)
xingzhengqu = driver.find_element_by_xpath('//*[@id="condition-panel"]/div[2]/div[2]/div/label[1]').click()  #行政区
time.sleep(0.5)
sheng = driver.find_element_by_xpath('//*[@id="provinces-list"]').click()  #省
time.sleep(0.5)
sheng_s = driver.find_element_by_xpath('//*[@id="reg32"]').click()  #省
time.sleep(0.5)
shi = driver.find_element_by_xpath('//*[@id="city-list"]').click()  #市
time.sleep(0.5)
shi_c = driver.find_element_by_xpath('//*[@id="city-list"]/option[9]').click()  #市
time.sleep(0.5)
Time1 = driver.find_element_by_xpath('//*[@id="sdate-input"]')  #Time1
Time1.send_keys('2000-01-01')
time.sleep(0.5)
Time2 = driver.find_element_by_xpath('//*[@id="edate-input"]')  #Time2
Time2.send_keys('2022-12-31')
time.sleep(0.5)
jiansuo = driver.find_element_by_xpath('//*[@id="search-btn"]').click()  #检索

# 开始下载
# #一共是7页
page_num = 49
page = 1

while page <= page_num:
    print('当前下载第{}页'.format(page))
    for tr_num in range(1,11):  # 每页10个
        d_everypage = '//*[@id="result-listview"]/div/table/tr['+str(tr_num)+']/td[2]/div/div/a[2]/span'
        WebDriverWait(driver, 20).until(expected_conditions.visibility_of_element_located((By.XPATH, d_everypage)))  # 翻页后重新定位,否则报错ElementClickInterceptedException:
        element = driver.find_element_by_xpath(d_everypage)
        webdriver.ActionChains(driver).move_to_element(element).click(element).perform()
        time.sleep(600)  #下载间隔
    page += 1
    next = driver.find_element_by_xpath('//*[@id="pager"]/div/table/tr/td[10]/a/span/span/span').click()  # 下一页
    time.sleep(3)

3.实验结果

图4展示了下载的影像中的其中一幅。经过高级检索我们可以发现,符合要求的影像共有487条,人为手动下载必然是很大的工作量,但是使用爬虫可以大大缩减工作量。

图4 实验下载影像

文案 | 陆鼎阳
编辑&校对 | 曹浩宇&杨陵
指导 | 熊礼阳 副教授
侵删

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NVIDIA驱动学习

lspci | grep -i vga 输出&#xff1a; 2d:00.0 VGA compatible controller: NVIDIA Corporation Device 2204 (rev a1) 99:00.0 VGA compatible controller: NVIDIA Corporation Device 2230 (rev a1)import torch print(torch.version.cuda) # 应该显示 CUDA 版本 print(tor…

【自动化与控制系统】SCI一区TOP神刊!最快19天accept、稳定检索!

期刊解析 &#x1f6a9;本 期 期 刊 看 点 &#x1f6a9; 国人发文占比第一&#xff0c;TOP刊 审稿友好&#xff0c;审稿速度快 自引率9.8% 今天小编带来计算机领域SCI快刊的解读&#xff01; 如有相关领域作者有意投稿&#xff0c;可作为重点关注&#xff01; 01 期刊信息…

综合评价 | 基于熵权-变异系数-博弈组合法的综合评价模型(Matlab)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 根据信息熵的定义&#xff0c;对于某项指标&#xff0c;可以用熵值来判断某个指标的离散程度&#xff0c;其信息熵值越小&#xff0c;指标的离散程度越大&#xff0c; 该指标对综合评价的影响&#xff08;即权重&…

鸿蒙开发(API 12 Beta6版)【HCE卡模拟开发】 网络篇

简介 近场通信(Near Field Communication&#xff0c;NFC)是一种短距高频的无线电技术&#xff0c;在13.56MHz频率运行&#xff0c;通信距离一般在10厘米距离内。HCE(Host Card Emulation)&#xff0c;称为基于主机的卡模拟&#xff0c;表示不依赖安全单元芯片&#xff0c;电子…

辽宁汇聚公益慈善力量,绿葆网络助力辽宁绿色生态建设,彰显企业大爱

9月5日&#xff0c;于辽宁省沈阳市隆重举行的“中华慈善日”主题宣传活动暨“山海有情 天辽地宁”即开型福利彩票发行、“生态公益林”项目启动仪式上&#xff0c;广州绿葆网络发展有限公司作为受邀企业之一&#xff0c;积极履行社会责任&#xff0c;向辽宁省慈善联合总会捐赠了…

Python教程(二十) : 十分钟入门【PyQt6】

文章目录 专栏列表环境准备1 安装 Python2 安装 PyQt6 创建 PyQt6 项目1 创建项目目录2 创建主 Python 文件 代码书写测试流程1 导入 PyQt6 模块2 创建主窗口类3 创建应用程序实例并运行 核心解析&#xff1a;PyQt6 中的模块示例代码&#xff1a; PyQt6 常用的控件1. QPushButt…

如何选适合混合云环境下的监控系统?

在选择适合混合云环境下的监控系统时&#xff0c;需要考虑以下几个关键因素&#xff1a; 1. 兼容性 跨平台支持&#xff1a;确保监控系统能够无缝地在私有云、公有云和本地环境中运行。 API集成&#xff1a;支持与各种云服务提供商的API集成&#xff0c;以便收集来自不同来源的…

算法知识点————双指针【删除重复元素】【反转链表】

删除重复元素 题目&#xff1a;//给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数 思路&#xff1a…

基于微信小程序的机票预订平台的设计与实现的设计与实现---附源码80729

摘要 本文介绍了一个基于微信小程序的机票预订平台的设计与实现。随着移动互联网的快速发展&#xff0c;用户对机票预订的需求日益增长&#xff0c;因此开发一个便捷、高效的机票预订平台变得尤为重要。 本文首先分析了机票预订平台的背景和需求&#xff0c;然后详细阐述了系统…

计算机毕业设计选题推荐-班级管理系统-教务管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

网络基础入门指南(一)

前言 在这个高度互联的世界里&#xff0c;互联网已成为日常生活不可或缺的一部分。然而&#xff0c;对于许多人来说&#xff0c;网络是如何工作的仍然是个谜。本文旨在为那些对网络基础知识感兴趣的朋友提供一个简单的介绍&#xff0c;帮助大家更好地理解互联网的基本原理和技…

远程搜索:remote-method

为了启用远程搜索&#xff0c;需要将filterable和remote设置为true&#xff0c;同时传入一个remote-method。remote-method为一个Function&#xff0c;它会在输入值发生变化时调用&#xff0c;参数为当前输入值。需要注意的是&#xff0c;如果el-option是通过v-for指令渲染出来…

【C++ Qt day9】

2、将day1做的登录界面升级优化【资源文件的添加】 3、 使用手动连接&#xff0c;将登录框中的取消按钮使用第2种方式的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上…

elementui Cascader 级联选择器的使用总结

实现效果 技术要点总结如下&#xff1a; 1、点击添加自动增加多行&#xff0c;实现自主选择增加多条节点数据 2、节点地址使用的是Cascader 级联选择器&#xff0c;需要动态生成&#xff0c;涉及到一个技术要点是&#xff1a;因v-modal只能获取value不能获取label&#xff0c;故…

CCF编程能力等级认证GESP—C++7级—20240907

CCF编程能力等级认证GESP—C1级真题 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)小杨寻宝矩阵移动 单选题&#xff08;每题 2 分&#xff0c;共 30 分&…

网络安全工程师(白帽子)企业级学习路线

第一阶段&#xff1a;安全基础&#xff08;入门&#xff09; 第二阶段&#xff1a;Web渗透&#xff08;初级网安工程师&#xff09; 第三阶段&#xff1a;进阶部分&#xff08;中级网络安全工程师&#xff09;

数据分析-14-时间序列异常检测的六类常用方法(案例实战)

1 异常值检测的六类方法 异常值检测与处理是数据清洗过程中的一个关键步骤,它涉及到识别和处理那些与大多数数据显著不同的数据点。异常值可能是由于数据录入错误、测量误差、数据损坏或其他原因造成的。处理异常值的目的是提高数据的质量,避免它们对分析结果产生不利影响。…

关于领英的干货文章

今天这篇文章是关于领英的干货文章 没有用领英还有已经在用的朋友记得点赞哦&#xff0c; 这样需要的时候才能找到“我” 从这几个点出发 linkedln的注册&#xff0c;资料信息设置linkedin 发布动态linkedin 加人linkedin 加群客户开发 注册及资料信息设置 注册linkedin新…

无人驾驶遇上‘超级WiFi‘,低速无人驾驶已成为了主要趋势?

嘿,各位工业大佬们!今天咱们来聊个又酷又实用的话题 - 工业无人驾驶!不过,别以为这只是在工厂里溜达溜达的小推车,我们要聊的可是能在矿山里"跑酷"的大家伙! 想象一下,在一个尘土飞扬的露天矿场,几辆庞大的无人卡车正在有条不紊地工作。它们像是被施了魔法一样,自动…

猜测、实现 B 站在看人数

猜测、实现 B 站在看人数 猜测找到接口参数总结 实现 猜测 找到接口 浏览器打开一个 B 站视频&#xff0c;比如 《黑神话&#xff1a;悟空》最终预告 | 8月20日&#xff0c;重走西游_黑神话悟空 (bilibili.com) &#xff0c;打开 F12 开发者工具&#xff0c;经过观察&#xf…