28-地理空间数据云下载

......失踪人口再次回归......

目的:爬取地理空间云数据中的“/数据资源/DEM数字高程数据/GDEMV2 30M 分辨率数字高程数据”,地理空间云数据的网址:http://www.gscloud.cn,要下载类型的数据约有2万多个。

结果呈现:下载zip文件

------------------------------华丽的分割线-----------------------------------

隔壁班的同学QQ小弹窗:“潘锁艳,你会爬虫?这个数据量太大,所以用手点不可能实现,你试一试?”

小潘同学心想:哈哈哈,终于能爬取个和自己专业(地理学)相关的网站了!

------------------------------华丽的分割线-----------------------------------

一开始想的太复杂,想在同学面前装×,打算利用session会话,先获取cookie,再找到验证码图片,再校验验证码,再校验邮箱密码,在获取csrftoken和utoken,再校验token值,登录成功之后,再访问要下载的页面。

嗯。一切都是为了装×,然后我就找验证码,找token值......但是被反爬了,IP被限制了,我又想到把之前的代理池拿过来用吧!

呵呵,越来越复杂了,有木有?我有没有很装×?!

不说了,上面这条装×的路,我选择放弃,一环套一环,心累......

然后我花了30分钟不到,写一个利用Selenium+Chrome的动态登录以及下载。嗯,超简单,都不用你操作啥,原理也超简单,就是根据xpath获得正确的标签,然后进行操作就可以了,果然不装×,才是王道!

#下面为本实例的爬虫代码,若有问题可以给我留言,或者有更好的解决方法也可以私信我~

from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys

driver=webdriver.Chrome(executable_path='C:\\Users\Administrator\Anaconda3\Scripts\chromedriver.exe')

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)
sjzy=driver.find_element_by_xpath('/html/body/div[3]/div[3]/div[5]/a/h4').click()
time.sleep(3)
GDEMV30=driver.find_element_by_xpath('//*[@id="dataset-listview"]/div/div/ul/li[4]/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): #只能取到3-12
        d_everypage='//*[@id="all_datasets_listview"]/div/table/tbody/tr['+str(tr_num)+']/td[9]/div/div/a[2]/span'
        download=driver.find_element_by_xpath(d_everypage).click()
        time.sleep(20)  #每个下载时间给20秒
    page += 1
    page_sr=driver.find_element_by_xpath('//*[@id="pager1"]/div[2]/table/tbody/tr/td[7]/input')
    page_sr.clear()
    page_sr.send_keys(page)
    page_sr.send_keys(Keys.RETURN)
    time.sleep(3)

结果:28-地理空间数据云下载_第1张图片28-地理空间数据云下载_第2张图片【还在下载呢。。。。。。毕竟2万多个dem数据,手点不累死你

---------(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)(。・ω・。)----------

今日爬虫完成!

今日鸡汤:没有人不辛苦,只有人不喊疼,真正坚强的人,会把哭声调成静音,会把委屈化成动力,一路披荆斩棘,坚强到无懈可击,勇敢到无畏无惧! 

加油ヾ(◍°∇°◍)ノ゙

转载于:https://my.oschina.net/pansy0425/blog/3050448

你可能感兴趣的:(28-地理空间数据云下载)