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

news2024/9/25 5:24:19

一.配置Python 爬虫 环境

from selenium import webdriver
import time
# from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By

from 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-12
        d_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 += 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(15)
input()

四.一些小技巧

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

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

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

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

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

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

相关文章

软件高级:软件产品线-双生命周期模型概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

[C语言]利用动态内存制作一个通讯录

目录 开辟动态内存的方式 Malloc free calloc realloc 通讯录的制作 源代码 代码解读以及注意事项 开辟动态内存的方式 Malloc void* malloc (size_t size); 这个函数向内存申请一块连续可用的空间&#xff0c;并返回指向这块空间的指针。 如果开辟成功&#xff0c;…

34.网络游戏逆向分析与漏洞攻防-游戏网络通信数据解析-登录数据包的监视与模拟

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;33.游戏登录数据…

100W-200W-300W扁平片式厚膜高压电阻-节省空间的设计

描述 由于其节省空间的设计&#xff0c;EAK采用厚膜技术的 功率电阻器可在狭窄的空间内实现高功率密度。 低电感和提供高电阻值的能力等特性为电力电子开辟了新的前景。 我们的产品组合范围从标准产品到根据您的确切要求进行调整的产品。 告诉我们您想要的输出、尺寸和电阻…

探索 Atlassian 云平台:组织、站点、产品架构解析

我们通常访问的是 Atlassian 的某个云站点&#xff0c;比如填空题-中国站点为&#xff1a;cloze-cn.atlassian.net。当我们访问该站点内的具体产品时&#xff0c;只需在该站点的 URL 后添加相应产品的缩写&#xff0c;例如&#xff1a; Confluence: cloze-cn.atlassian.net/wi…

STM32微控制器中,如何处理多个同时触发的中断请求?

在STM32微控制器中&#xff0c;处理多个同时触发的中断请求需要一个明确的中断优先级策略&#xff0c;以确保关键任务能够及时得到响应。STM32的中断控制器&#xff08;NVIC&#xff09;支持优先级分组&#xff0c;允许开发者为不同的中断设置抢占优先级和子优先级。本文将详细…

【深度学习】pytorch,MNIST手写数字分类

efficientnet_b0的迁移学习 import torch import torch.nn as nn import torch.optim as optim import torchvision.transforms as transforms from torchvision.datasets import MNIST from torch.utils.data import DataLoader from torchvision import models import matplo…

【数据结构】五分钟自测主干知识(十)

上一节&#xff0c;我们讲述了二叉树的概念&#xff0c;二叉树又有什么基本操作呢&#xff1f;今天我们来讲述二叉树的应用~ 话不多说&#xff0c;书继上回 5.3二叉树的遍历及应用 二叉树由三个基本部分组成&#xff1a;根结点&#xff08;D&#xff09;&#xff0c;左子树&a…

ZooKeeper 的常见应用场景

数据发布与订阅 发布与订阅即所谓的配置管理&#xff0c;顾名思义就是将数据发布到ZooKeeper节点上&#xff0c;供订阅者动态获取数据&#xff0c;实现配置信息的集中式管理和动态更新。例如全局的配置信息&#xff0c;地址列表等就非常适合使用。 数据发布/订阅的一个常见的…

Spring Boot:基础配置

Spring Boot 全局配置文件application.propertiesapplication.yml全局配置文件的优先级 从全局配置文件中获取数据的注解从外部属性文件中获取数据的注解全局配置文件的配置项通用配置项数据源配置项JPA 配置项日志配置项配置文件特定配置项Profile 特定配置项 配置类配置文件中…

【Emgu CV教程】10.4、轮廓之多边形近似拟合

文章目录 一、什么叫轮廓的多边形近似拟合二、轮廓的多边形近似拟合函数三、简单应用1.原始素材2.代码3.运行结果 一、什么叫轮廓的多边形近似拟合 轮廓一般都是光滑的曲线&#xff0c;多边形近似拟合的意思就是&#xff0c;利用少量的点组成的折线&#xff0c;近似逼近原始多…

AIGC实战——Transformer模型

AIGC实战——Transformer模型 0. 前言1. T52. GPT-3 和 GPT-43. ChatGPT小结系列链接 0. 前言 我们在 GPT (Generative Pre-trained Transformer) 一节所构建的 GPT 模型是一个解码器 Transformer&#xff0c;它逐字符地生成文本字符串&#xff0c;并使用因果掩码只关注输入字…

力扣98---验证二叉搜索树

题目描述&#xff1a; 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 …

计算联合体union的大小

一&#xff1a;联合类型的定义 联合也是一种特殊的自定义类型&#xff0c;这种类型定义的变量也包含一系列的成员&#xff0c;特征是这些成员公用同一块空间&#xff08;所以联合也叫共用体&#xff09; 比如&#xff1a;共用了 i 这个较大的空间 二&#xff1a; 联合的特点 …

YoloV8改进策略:Block改进|PKINet

摘要 PKINet是面向遥感旋转框的主干,网络包含了CAA、PKI等模块,给我们改进卷积结构的模型带来了很多启发。本文使用PKINet的Block替换YoloV8的Block,实现涨点。改进方法是我独创首发,给写论文没有思路的同学提供改进思路,欢迎大家订阅! 论文:《Poly Kernel Inception …

需求:实现一个类似打印的效果(文字一个字一个字的输出)

实现效果&#xff1a; 需求&#xff1a;最近接到这么一个需求&#xff0c;ai机器人回复的问题&#xff0c;后端是通过websocket每隔一段事件返回数据&#xff0c;前端拿到数据后直接渲染&#xff0c;现在需要做到一个效果&#xff0c;后端返回的结果前端需要一个一个文字的输出…

Unity Canvas的三种模式

一、简介&#xff1a; Canvas的Render Mode一共有三种模式&#xff1a;Screen Space -OverLay、Screen Space-Camera、World Space Screen Space - Overlay&#xff08;屏幕空间 - 覆盖&#xff09;&#xff1a; 这是最简单的 Canvas 渲染模式。UI 元素在这个模式下将渲染在屏…

使用amd架构的计算机部署其他架构的虚拟机(如:arm)

1 下载quem模拟器 https://qemu.weilnetz.de/w64/2 QEMU UEFI固件文件下载(引导文件) 推荐使用&#xff1a;https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd3 QEMU 安装 安装完成之后&#xff0c;需要将安装目录添加到环境变…

flutter3_douyin:基于flutter3+dart3短视频直播实例|Flutter3.x仿抖音

flutter3-dylive 跨平台仿抖音短视频直播app实战项目。 全新原创基于flutter3.19.2dart3.3.0getx等技术开发仿抖音app实战项目。实现了类似抖音整屏丝滑式上下滑动视频、左右滑动切换页面模块&#xff0c;直播间进场/礼物动效&#xff0c;聊天等模块。 运用技术 编辑器&#x…

C语言字节对齐关键字#pragma pack(n)的使用

0 前言 在进行嵌入式开发的过程中&#xff0c;我们经常会见到对齐操作。这些对齐操作有些是为了便于实现指针操作&#xff0c;有些是为了加速对内存的访问。因此&#xff0c;学习如何使用对齐关键字是对于嵌入式开发是很有必要的。 1 对齐规则 1.0 什么叫做对齐 众所周知&a…