python 爬虫 地理空间DEM 制作中国地形

一.配置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/760389.shtml

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

相关文章

Langchain-chatchat+ChatGlm3-6b部署

我的环境 升级了下配置&#xff0c;加载知识库成功 内存&#xff1a;16GB 32B 显卡&#xff1a;GTX1060-6G RTX4080 Laptop-12G 1. 基础环境准备 1.1. 安装anaconda&#xff0c;创建环境python版本3.11 conda create -n chatglm3 python3.11 conda activate chatglm3 1.…

如何在CentOS搭建docker compose ui可视化工具并无公网IP远程管理容器

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

蓝桥杯 2023 省A 更小的数

主要思路&#xff1a; 输入一个长度为n的字符串&#xff0c;用二维数组dp[i][j]来记录子串[i, j]是否需要反转一次才能满足条件。使用动态规划自底向上地填充dp数组。根据问题的要求&#xff0c;需要考虑字符串的子串中字符的大小关系来判断是否需要反转。最后统计满足条件的子…

静态扭矩,是用公称扭矩还是最小动态扭矩作为对比?——​suntorque智能扭矩系统​

在机械工程和动力学领域&#xff0c;扭矩是一个至关重要的概念。当我们讨论到扭矩时&#xff0c;常常会遇到静态扭矩和动态扭矩的说法。特别是在实际应用中&#xff0c;工程师们经常需要对比和选择使用哪种扭矩作为参考。那么&#xff0c;静态扭矩&#xff0c;是用公称扭矩还是…

【C/C++】详解 assert() 断言(什么是assert? assert有什么作用?)

目录 一、前言 二、什么是 assert ? 三、assert 的用法 四、assert 案例解析 五、assert 断言的使用原则 六、共勉 一、前言 在编写程序过程中&#xff0c;尤其是调试代码时&#xff0c;往往需要一个提醒代码漏洞/Bug的小助手&#xff0c;以便于程序员及时修改和完善代码…

LeetCode 回文排列 java题解

题目 字符总数奇数&#xff1a;最多一个字符出现奇数次 字符总数偶数&#xff1a;所有字符都出现偶数次 可以使用哈希表。存储次数后再遍历哈希表判断是否符合。为了避免遍历&#xff0c;两次遇到同样的字符&#xff0c;一次加一次减就可以消掉&#xff0c;出现偶数次的字符最终…

C语言例3-38:强制类型转换的例子

数据类型强制转换的一般格式 &#xff08;数据类型符&#xff09;&#xff08;表达式&#xff09; &#xff01;&#xff01;&#xff01;注&#xff1a;第一个括号不能省略&#xff1b;第二个括号内是单个常量或变量时可省略。 例3-38&#xff1a;强制类型转换的例子 (doub…

109 项目整合 spring-quartz 启动自动执行定时任务

前言 项目中使用了 quartz 来支持定时任务的相关基础支撑, 但是 最近添加了一个 资源消耗比较高的定时任务, 发布到测试环境之后, 发现服务突然 起不起来了[资源比较有限] 然后 查看了一下日志, 这个定时任务怎么在执行?, 不是 配置的是 凌晨两点么, 然后 仔细一看 几乎配置…

python课后习题一

题目&#xff1a; 1. 2. 解题过程&#xff1a; 1. """计算年数和天数""" minute int(input("请输入分钟数&#xff1a;")) hours minute // 60 days hours // 24 years days // 365 last_days days % 365 print(f"{minut…

【IEDM2023】背势垒电荷运动诱导GaN HEMT随时间的非稳态击穿

分享一篇2023年IEDM上GaN HEMT&#xff08;高电子迁移率晶体管&#xff09;的研究论文&#xff0c;标题为“Charge Movement in Back Barrier Induced Time-Dependent On-State Breakdown of GaN HEMT”。论文讨论了在GaN HEMT中&#xff0c;由于背栅&#xff08;Back Barrier&…

BigDecimal类的使用,用于精确计算任意精度的数字

BigDecimal类 BigDecimal 是 Java 中用于精确表示任意精度的十进制数的类。在很多情况下,使用基本数据类型(如 double 或 float)进行浮点数计算可能会导致精度丢失或舍入错误。BigDecimal 提供了一种更精确的解决方案,可以处理需要高精度计算的场景,比如财务应用或科学计算…

文本处理基本方法

目录 分词 jieba 词性标注 &#x1f606;&#x1f606;&#x1f606;感谢大家观看&#x1f606;&#x1f606;&#x1f606; 分词 在中文文本中&#xff0c;由于词与词之间没有明显的界限符&#xff0c;如英文中的空格&#xff0c;因此分词是中文自然语言处理的一个基础且…

3699. 树的高度 南京理工大学考研上机真题 DFS思想

树是一种特殊的图结构&#xff0c;有根树是一个有固定根的树。 现在给定一棵有根树&#xff0c;编程求出树中所有节点到指定的根节点最远距离。 输入格式 第一行是两个整数 N,M&#xff0c;表示数的顶点数和根节点的编号。 接下来 N−1 行&#xff0c;每行两个整数 u,&…

力扣---括号生成---回溯---dfs/二进制

暴力--二进制 采用与&#xff1a;力扣---子集---回溯&#xff08;子集型回溯&#xff09;---递归-CSDN博客 中二进制求解一样的思路&#xff0c;即遍历0~-1&#xff08;从二进制去考虑&#xff09;&#xff0c;如果这个数的第 i 位为0&#xff0c;则括号的第 i 位为‘&#xff…

Excel第27享:基于if函数嵌套的多结果唯一性匹配

1、需求描述 如下图所示&#xff0c;现在有E列、F列、G列三列数据&#xff0c;在D列中填充“最终对应编号”&#xff0c;匹配原则是&#xff1a;E列、F列、G列三列数据中&#xff0c;哪个有数据就填充哪个数据&#xff0c;如果都没有&#xff0c;就显示空值即可。 2、解决思路…

windows使用知识

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言windows使用知识 一、cmd鼠标选中后&#xff0c;程序不运行的解决方案总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; windows使用…

前端学习资源整合

整合优质前端学习资源和文章&#xff0c;不定期更新。 JavaScript 现代 JavaScript 教程 官网&#xff1a;https://zh.javascript.info/GitHub&#xff1a;https://github.com/javascript-tutorial/zh.javascript.info 优秀的JS代码规范 官方英文版&#xff1a;https://gi…

二刷代码随想录——动态规划day53

文章目录 前言动态规知识点 动规五部曲一、1143. 最长公共子序列二、1035. 不相交的线三、53. 最大子数组和总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招&#xff0c;计划二刷完卡子哥的刷题计划&#xff0c;加油&#xff01; 二刷决定精刷了&#xff0c;于是参加…

SpringCloud面试题以及答案

1、SpringCloud是什么&#xff1f; 1、 Spring Cloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用SpringBoot的…

redis 常见的异常

目录 一、缓存穿透 1、概念 解决方案 &#xff08;1&#xff09;布隆过滤器 (2)、缓存空对象 二、缓存雪崩 1、概念 解决方案 &#xff08;1&#xff09;redis高可用 &#xff08;2&#xff09;限流降级 &#xff08;3&#xff09;数据预热 一、缓存穿透 1、概念 缓…