python 爬虫爬取地理空间高程图GDEMV2 30m 中国地形

一.配置Python 爬虫 环境

from selenium import webdriver
import time
# from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keys
# from selenium.webdriver.common.keys import Keys  PhantomJS浏览器创建器对象

这是头文件需要用到的库。我们首先要配置selenium。我们还需要去下载Web驱动。

我直接放到的 python.exe 那个目录里了。

二.理解爬虫 写爬虫

我们需要 访问网页的元素。并用代码代替人为的操作。

1.访问地理空间数据云

driver = webdriver.Chrome()
driver.get('https://www.gscloud.cn/accounts/login_user')

2.登录

driver.get('https://www.gscloud.cn/accounts/login_user')
email = driver.find_element(By.ID,'email')
email.send_keys('3559216518@qq.com')
passport = driver.find_element(By.XPATH,'//*[@id="password"]')
passport.send_keys('GWX072551a')
captcha=driver.find_element(By.XPATH,'//*[@id="id_captcha_1"]')
captcha_sj=input('请输入验证码:').strip()
captcha.send_keys(captcha_sj)
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="btn-login"]').click()
time.sleep(3)

3.跳转页面 

driver.find_element(By.XPATH,'/html/body/div[1]/div[1]/div[2]/ul/li[2]').click()
time.sleep(3)
#//*[@id="dataset-btn"]/img
driver.find_element(By.XPATH,'//*[@id="dataset-btn"]/img').click()
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[1]/span[1]').click()
#driver.find_element(By.XPATH,'//*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[4]/ul/li[1]/div/label/span[2]').click()  //*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[1]/span[1]  //*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[4]/span[1]
#//*[@id="c421"] //*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[4]/span[1]
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[4]/span[1]').click()
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="c421"]').click()
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="all-datasets-dlg"]/div/div[3]/button[2]').click()
# //*[@id="condition-panel"]/div[2]/div[2]/div
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="condition-panel"]/div[2]/div[2]/div').click()
# //*[@id="condition-panel"]/div[2]/div[2]/div/label[2]
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="condition-panel"]/div[2]/div[2]/div/label[2]').click()
# //*[@id="lng_input_1"]
time.sleep(3)
#70 135   15 55
LeftJinDu = driver.find_element(By.XPATH,'//*[@id="lng_input_1"]')
LeftJinDu.send_keys('70.5')
# //*[@id="lng_input_2"]
time.sleep(3)
LeftJinDu = driver.find_element(By.XPATH,'//*[@id="lng_input_2"]')
LeftJinDu.send_keys('134.5')time.sleep(3)
LeftJinDu = driver.find_element(By.XPATH,'//*[@id="lat_input_1"]')
LeftJinDu.send_keys('15.5')time.sleep(3)
LeftJinDu = driver.find_element(By.XPATH,'//*[@id="lat_input_2"]')
LeftJinDu.send_keys('54.5')
#//*[@id="search-btn"]
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="search-btn"]').click()
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="search-btn"]').click()
time.sleep(3)

会一步一步点击元素,跳转到这个页面

三.下载数据

page_num=222
page=1
page_sr = driver.find_element(By.XPATH,'//*[@id="pager"]/div/table/tr/td[7]/input')
# //*[@id="pager"]/div/table/tr/td[7]/input
page_sr.clear()
page_sr.send_keys(page)
page_sr.send_keys(Keys.RETURN)
time.sleep(10)while page<=page_num:print('当前下载第{}页'.format(page))for tr_num in range(1,11): #只能取到3-12d_everypage='//*[@id="result-listview"]/div/table/tr['+str(tr_num)+']/td[2]/div/div/a[2]/span/img'download=driver.find_element(By.XPATH,d_everypage).click()print(d_everypage)time.sleep(60)  #每个下载时间给20秒page += 1page_sr = driver.find_element(By.XPATH,'//*[@id="pager"]/div/table/tr/td[7]/input')
# //*[@id="pager"]/div/table/tr/td[7]/inputpage_sr.clear()page_sr.send_keys(page)page_sr.send_keys(Keys.RETURN)time.sleep(15)
input()

四.一些小技巧

想要获得,对应页面元素的。Xpth,就用检查。选中对应的元素代码,右键点击后,Copy.

Cpoy Xpth 即可。这样特别方便find_element(By.Xpth)。

一般都要time.Sleep,因为等待需要网络响应.再点击。特别网不好的时候,sleep时间适当长一点。可以保证,程序不出错。

有时因为网页反应问题导致,元素停止在上一个网页没更新。数据有遗漏,导致上一页的数据重复下载。

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

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

相关文章

Linux命令总结

1.目录切换 #切换到该目录下 usr 目录 cd usr #切换到上一层目录 cd ../ cd .. #切换到系统根目录 cd / #切换到用户主目录 cd ~ #切换到上一个操作所在目录 cd -2.目录操作 #显示目录中的文件和子目录的列表 ls /usr #目录下的所有目录和文件的详细信息 ll /usr #创建新目录…

【鸿蒙系统】 ---OpenHarmony加快本地编译(二)

&#x1f48c; 所属专栏&#xff1a;【鸿蒙系统】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢…

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention马尔可夫转移场卷积网络多头注意力机制多特征分类预测/故障识别

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention马尔可夫转移场卷积网络多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention马尔可夫转移场卷积网络多头注意力机制多特征分类预测/故障识别分类效果基本介绍模型描述程序设计参考…

sqlalchemy和moke生成实体类(一)

前言 如果通过java生成实体类&#xff0c;可以通过mybatis或者mybatis-plus的generator。 而sqlalchemy也可以生成实体类&#xff0c;通过sqlalcodegen或者flask-sqlalcodegen。 使用flask-sqlalcodegen生成实体类 建表 建立学生表&#xff0c;如下。 create table stude…

【Android】系统启动流程分析 —— init 进程启动过程

本文基于 Android 14.0.0_r2 的系统启动流程分析。 一、概述 init 进程属于一个守护进程&#xff0c;准确的说&#xff0c;它是 Linux 系统中用户控制的第一个进程&#xff0c;它的进程号为 1&#xff0c;它的生命周期贯穿整个 Linux 内核运行的始终。Android 中所有其它的进程…

Machine Learning - Logistic Regression

目录 一、Activation Function Why introduce activation functions? There are several commonly used activation functions: 二、Sigmoid&#xff1a; 三、Logistic Regression Model&#xff1a; 四、Implementation of logistic regression&#xff1a; 五、Decis…

unity 多屏幕操作

想了解基础操作请移步&#xff1a;&#xff08;重点是大佬写的好&#xff0c;这里就不再赘述&#xff09; Unity 基础 之 使用 Display 简单的实现 多屏幕显示的效果_unity display-CSDN博客 在panel上也可以通过获取 Canvas&#xff0c;来达到切换多屏幕的操作&#xff0c; …

Pear-rec:一键开启多功能捕捉分享,告别繁琐操作!

Pear-rec&#xff1a;一键捕捉每一刻&#xff0c;让每一次分享变得简单高效 - 精选真开源&#xff0c;释放新价值。 概览 Pear-rec是一款采用先进的Electron框架构建&#xff0c;并以ReactJS为前端技术基础的跨平台桌面应用&#xff0c;专注于提供全方位的屏幕捕捉与媒体处理功…

【C++】类与对象(下篇)

在本篇博客中&#xff0c;作者将会讲解类与对象的最后一篇。 一.再谈构造函数 在类与对象&#xff08;上篇&#xff09;中&#xff0c;我们讲到了构造函数&#xff0c;其实构造函数就是给每个成员变量进行赋值&#xff01;&#xff01;&#xff01; 仅仅只是赋值而已&#xf…

阿里云2核4G服务器支持多少人在线?2C4G多少钱一年?

2核4G服务器支持多少人在线&#xff1f;阿里云服务器网账号下的2核4G服务器支持20人同时在线访问&#xff0c;然而应用不同、类型不同、程序效率不同实际并发数也不同&#xff0c;2核4G服务器的在线访问人数取决于多个变量因素。 阿里云2核4G服务器多少钱一年&#xff1f;2核4…

地宫取宝dfs

分析&#xff1a; 矩阵里的每一个位置都有标记&#xff0c;要求的问题是&#xff1a;有几种方法能完成这个规定。 那么&#xff0c;我们只需要计算从开始(1,1)到最后(n,m)的深度优先搜索中&#xff0c;有几个是满足要求的即为正确答案。 有个要求是&#xff0c;如果一个格子中…

Docker-镜像仓库

Docker ⛅Docker-Registry&#x1f320;分类&#x1f320;镜像仓库工作机制&#x1f320;常用的镜像仓库&#x1f320;镜像仓库命令☃️docker login☃️docker pull☃️docker push☃️docker search☃️docker logout &#x1f320;镜像命令[部分]☃️docker images☃️docke…

Git工具的详细使用

一、环境说明 [rootgit ~]# getenforce Disabled [rootgit ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (d…

网络安全实训Day9

写在前面 访问控制和防火墙桌面端安全检测与防御 网络安全实训-网络安全技术 网络安全概述 访问控制 定义&#xff1a;通过定义策略和规则来限制哪些流量能经过防火墙&#xff0c;哪些流量不能通过。本质是包过滤 可以匹配的元素 IP协议版本 源区域和目的区域 源IP地址和目…

【赠书活动】Python编程 从入门到实践 第3版(图灵出品)(文末送书-进行中)

编辑推荐 适读人群 &#xff1a;本书适合对Python感兴趣的所有读者阅读。 编程入门就选蟒蛇书&#xff01; 【经典】Python入门经典&#xff0c;常居Amazon等编程类图书TOP榜 【畅销】热销全球&#xff0c;以12个语种发行&#xff0c;影响超过 250 万读者 【口碑】好评如潮…

2-dubbo源码 : 源码环境搭建

好的开始是成功的一半&#xff0c;阅读源码也是一样。 很多同学在下定决心阅读一个开源框架之后&#xff0c;就一头扎进去&#xff0c;迷失在代码“迷宫”中。此时&#xff0c;有同学意识到&#xff0c;需要一边 Debug 一边看&#xff1b;然后又有一批同学在搭建源码环境的时候…

学习C++是否有必要学习Boost库?

C作为一门强大且灵活的编程语言&#xff0c;在软件开发领域有着广泛的应用。而在C的学习过程中&#xff0c;Boost库是一个经常被提及的重要资源。那么&#xff0c;对于C的学习者而言&#xff0c;是否有必要投入精力去学习Boost库呢&#xff1f;本文将就此问题展开详尽讨论。 一…

论文:Zero-Shot Entity Linking by Reading Entity Descriptions翻译笔记(阅读实体描述、实体链接)

文章目录 论文题目&#xff1a;通过阅读实体描述实现零样本实体链接摘要1 介绍2 零点实体链接2.1 审查&#xff1a; 实体链接2.2 任务定义2.3 与其他 EL 任务的关系 3 数据集构建4 实体链接模型4.1 生成候选4.2 候选排序 5 适应目标世界6 实验6.1 基线6.2 对未知实体和新世界6.…

C++例子

#include<iostream> using namespace std;//抽象类 //抽象cpu类 class CPU { public:virtual void calcuate()0; }; //抽象显卡类 class VideoCard { public:virtual void display()0; }; //抽象内存条类 class Memory { public:virtual void storage()0;};//电脑类 clas…

【计算机网络】物理层

文章目录 第二章 物理层一、 物理层的基本概念1. 物理层接口特性 二、数据通信基础1. 典型的数据通信模型2. 数据通信相关术语3. 设计数据通信系统要考虑的3个问题4. 三种通信方式5. 串行传输&并行传输6. 同步传输&异步传输7. 码元8. 数字通信系统数据传输速率的两种表…