赞
踩
目录
上次提到通过modis连接下载数据的方式有很多,本文选择selenium模拟登录的方式通过谷歌浏览器下载,但是并不推荐这种方法,只是恰好学习了selenium的一些操作,所以写这个代码做了一些测试。
本文章只需要具备一定的selenium与pyautogui基础知识,需要下载好selenium库以及浏览器驱动。(本文采用的是谷歌浏览器,python版本为3.10)
NASA官网账号注册https://urs.earthdata.nasa.gov/users/new
1、当我们第一次访问连接时,会弹出登录窗口,但是我们不用捕捉元素,光标已经在用户名里面,所以直接使用pyautogui执行自动登录操作。(重点注意如果username存在字母输入法一定得是英文)
- def modis_get(self):
- n = 0
- with open('data.txt', 'r') as f:
- for line in f.readlines():
- if n == 0:
- self.driver.get(line)
- pyautogui.typewrite(self.username, 0.1)
- pyautogui.press('tab')
- pyautogui.typewrite(self.password, 0.1)
- pyautogui.press('tab')
- time.sleep(0.5)
- pyautogui.press('enter')
- n += 1
- print(f'开始下载第{n}个数据')
- else:
- self.driver.get(line)
- n += 1
- print(f'开始下载第{n}个数据')
2、下载路径管理,浏览器默认的下载路径是C:\Users\86182\Downloads,如果数据量大最好更改路径下载便于管理。
- def path_change(self, path=r'C:\Users\86182\Downloads'):
-
- chrome_options = webdriver.ChromeOptions()
- prefs = {'profile.default_content_settings.popups': 0, # 防止保存弹窗
- 'download.default_directory': path, # 设置默认下载路径
- "profile.default_content_setting_values.automatic_downloads": 1 # 允许多文件下载
- }
- chrome_options.add_experimental_option('prefs', prefs)
- self.driver = webdriver.Chrome(options=chrome_options)
3、关于浏览器下载路径的设置,一定要先执行设置方法,再执行下载方法。
- def main_get(self):
- self.path_change(self.new_path)
- self.modis_get()
- '''****************selenium模拟登录并实现通过浏览器下载数据**********************
- 作者:荷兰豆养殖专家
- ps:该方法纯属歪门邪道
- '''
-
- from selenium import webdriver
- import pyautogui
- import time
-
-
- class Selenium_modis_get(object):
- def __init__(self, new_path=None, username=None, pd=None, target_path=None):
- self.new_path = new_path
- self.username = username
- self.password = pd
- self.target_path = target_path
-
- def modis_get(self):
- n = 0
- with open(self.target_path, 'r') as f:
- for line in f.readlines():
- if n == 0:
- self.driver.get(line)
- pyautogui.typewrite(self.username, 0.1)
- pyautogui.press('tab')
- pyautogui.typewrite(self.password, 0.1)
- pyautogui.press('tab')
- time.sleep(0.5)
- pyautogui.press('enter')
- n += 1
- print(f'开始下载第{n}个数据')
- else:
- self.driver.get(line)
- n += 1
- print(f'开始下载第{n}个数据')
-
- def path_change(self, path=r'C:\Users\86182\Downloads'):
-
- chrome_options = webdriver.ChromeOptions()
- prefs = {'profile.default_content_settings.popups': 0, # 防止保存弹窗
- 'download.default_directory': path, # 设置默认下载路径
- "profile.default_content_setting_values.automatic_downloads": 1 # 允许多文件下载
- }
- chrome_options.add_experimental_option('prefs', prefs)
- self.driver = webdriver.Chrome(options=chrome_options)
-
-
- def main_get(self):
- self.path_change(self.new_path)
- self.modis_get()
-
-
- if __name__ == '__main__':
- modis = Selenium_modis_get(target_path='你的目标文件路径(绝对)',new_path=r'你希望下载的路径', username='你的username', pd='')
- modis.main_get()
- # modis.path_change()#数据下载完之后单独执行此代码即可改回默认下载路径(modis.main_get()注释掉)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。