数据集 | 地理空间数据云30m的DEM爬取

2022-04-29 08:50:05 浏览数 (1)

DEM数据是我们经常用到的一种数据,小编今天就带大家一块看一下怎么用python来爬取地理空间数据云的30m的DEM数据。

我们要爬取DEM数据首先还是要有一个地理空间数据云的账号。小伙伴们如果没有的话,还是需要申请一个的地理空间数据云的账号。

地理空间数据云的网址:

http://www.gscloud.cn/

我们今天主要使用的是python的selenium库。我们要爬取数据,还要配置一下selenium。

1

selenium配置

selenium是自动调用浏览器下载数据,因此不用担心网站的反爬虫,也不用进行复杂的一些设置IP代理之类的。

我们本次使用谷歌浏览器配合selenium进行爬取数据。除了下载谷歌浏览器以外,我们还需要下载chromedriver,并且chromedriver要与谷歌浏览器的版本对应。

我们在谷歌浏览器的地址栏输入:chrome://version/,就会跳出如下的界面:

我们可以看到,我们谷歌浏览器的版本为81版本,我们找对应的chromedriver就可以。

chromedriver下载地址:

http://chromedriver.storage.googleapis.com/index.html

进入网址:

我们进去开头为81的某个链接,

我们还要瞅一眼notes(下图),可以看到标黄处显示支持81版本的谷歌浏览器,我们就可以安心的下载这个chromedriver了。我们返回上一页,选择win32的版本下载下来就可以,路径我们要记住,接下来要使用到。

下面我们看一下就要运行python的代码,这里我们需要修改下载路径和chromedriver的路径还有填写我们自己的账号密码

代码语言:javascript复制
from selenium import webdriver
import time

chrome_options = webdriver.ChromeOptions()
prefs = {
'download.default_directory':'修改为你的路径',#设置默认下载路径
"profile.default_content_setting_values.automatic_downloads":1
}
chrome_options.add_experimental_option('prefs', prefs)
#下面这行代码需要修改为你的chromedriver.exe路径
driver=webdriver.Chrome(executable_path='G:chromedriver_win32chromedriver.exe',
                        chrome_options=chrome_options)
   
driver.get('https://www.gscloud.cn/accounts/login')

email=driver.find_element_by_xpath('//*[@id="userid"]')
#填写账号
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="login-form"]/input[3]').click()
time.sleep(3)
DEM=driver.find_element_by_xpath('/html/body/div[3]/div[3]/div[6]').click()
time.sleep(3)
GDEMV30=driver.find_element_by_xpath('//*[@id="dataset-listview"]/div/div/ul/li[3]/div/a[3]').click()
time.sleep(3)
#总共有2261页数据
page_num=2261
page=1
while page<=page_num:
    print('当前下载第{}页'.format(page))
    for tr_num in range(3,13): 
        d_everypage='//*[@id="all_datasets_listview"]/div/table/tbody/tr[{0}]/td[9]/div/div/a[2]/span'.format(str(tr_num))
        download=driver.find_element_by_xpath(d_everypage)
        driver.execute_script("arguments[0].click();", download)
        time.sleep(20)  
    page  = 1
    page_sr=driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div/div[3]/div/div[2]/table/tbody/tr/td[10]/a/span/span/span')
    driver.execute_script("arguments[0].click();", page_sr)
    time.sleep(10)

代码运行以后,就会自动跳出谷歌浏览器的页面,我们把页面的验证码填到我们代码运行结果里面就可以啦!第一次运行有可能失败,重新运行一遍就好啦!

我们看看下载的数据,都是zip压缩包:

0 人点赞