当前位置:   article > 正文

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

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

一.配置Python 爬虫 环境

  1. from selenium import webdriver
  2. import time
  3. # from selenium.webdriver.common.action_chains import ActionChains
  4. from selenium.webdriver.common.by import By
  5. from selenium.webdriver.common.keys import Keys
  6. # from selenium.webdriver.common.keys import Keys PhantomJS浏览器创建器对象

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

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

二.理解爬虫 写爬虫

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

1.访问地理空间数据云

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

2.登录

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

3.跳转页面 

  1. driver.find_element(By.XPATH,'/html/body/div[1]/div[1]/div[2]/ul/li[2]').click()
  2. time.sleep(3)
  3. #//*[@id="dataset-btn"]/img
  4. driver.find_element(By.XPATH,'//*[@id="dataset-btn"]/img').click()
  5. time.sleep(3)
  6. driver.find_element(By.XPATH,'//*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[1]/span[1]').click()
  7. #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]
  8. #//*[@id="c421"] //*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[4]/span[1]
  9. time.sleep(3)
  10. driver.find_element(By.XPATH,'//*[@id="all-datasets-dlg"]/div/div[2]/div/div[2]/ul/li[4]/span[1]').click()
  11. time.sleep(3)
  12. driver.find_element(By.XPATH,'//*[@id="c421"]').click()
  13. time.sleep(3)
  14. driver.find_element(By.XPATH,'//*[@id="all-datasets-dlg"]/div/div[3]/button[2]').click()
  15. # //*[@id="condition-panel"]/div[2]/div[2]/div
  16. time.sleep(3)
  17. driver.find_element(By.XPATH,'//*[@id="condition-panel"]/div[2]/div[2]/div').click()
  18. # //*[@id="condition-panel"]/div[2]/div[2]/div/label[2]
  19. time.sleep(3)
  20. driver.find_element(By.XPATH,'//*[@id="condition-panel"]/div[2]/div[2]/div/label[2]').click()
  21. # //*[@id="lng_input_1"]
  22. time.sleep(3)
  23. #70 135 15 55
  24. LeftJinDu = driver.find_element(By.XPATH,'//*[@id="lng_input_1"]')
  25. LeftJinDu.send_keys('70.5')
  26. # //*[@id="lng_input_2"]
  27. time.sleep(3)
  28. LeftJinDu = driver.find_element(By.XPATH,'//*[@id="lng_input_2"]')
  29. LeftJinDu.send_keys('134.5')
  30. time.sleep(3)
  31. LeftJinDu = driver.find_element(By.XPATH,'//*[@id="lat_input_1"]')
  32. LeftJinDu.send_keys('15.5')
  33. time.sleep(3)
  34. LeftJinDu = driver.find_element(By.XPATH,'//*[@id="lat_input_2"]')
  35. LeftJinDu.send_keys('54.5')
  36. #//*[@id="search-btn"]
  37. time.sleep(3)
  38. driver.find_element(By.XPATH,'//*[@id="search-btn"]').click()
  39. time.sleep(3)
  40. driver.find_element(By.XPATH,'//*[@id="search-btn"]').click()
  41. time.sleep(3)

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

三.下载数据

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

四.一些小技巧

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/286308
推荐阅读
相关标签
  

闽ICP备14008679号