我是靠谱客的博主 贤惠香水,这篇文章主要介绍Python selenium与pyautogui控制浏览器实现modis数据自动下载,现在分享给大家,希望可以做个参考。

目录

序言:

准备工作:

基本思路:

完整代码:


序言:

        上次提到通过modis连接下载数据的方式有很多,本文选择selenium模拟登录的方式通过谷歌浏览器下载,但是并不推荐这种方法,只是恰好学习了selenium的一些操作,所以写这个代码做了一些测试。

        本文章只需要具备一定的selenium与pyautogui基础知识,需要下载好selenium库以及浏览器驱动。(本文采用的是谷歌浏览器,python版本为3.10)

准备工作:

  • 首先得在NASA官网上注册一个账号,有了账号才能实现登录

NASA官网账号注册https://urs.earthdata.nasa.gov/users/new

  • 安装selenium库以及pyautogui(pip install 库名)

基本思路:

1、当我们第一次访问连接时,会弹出登录窗口,但是我们不用捕捉元素,光标已经在用户名里面,所以直接使用pyautogui执行自动登录操作。(重点注意如果username存在字母输入法一定得是英文)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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:Users86182Downloads,如果数据量大最好更改路径下载便于管理。

复制代码
1
2
3
4
5
6
7
8
9
10
def path_change(self, path=r'C:Users86182Downloads'): 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、关于浏览器下载路径的设置,一定要先执行设置方法,再执行下载方法。

复制代码
1
2
3
def main_get(self): self.path_change(self.new_path) self.modis_get()

完整代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
'''****************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:Users86182Downloads'): 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()注释掉)

最后

以上就是贤惠香水最近收集整理的关于Python selenium与pyautogui控制浏览器实现modis数据自动下载的全部内容,更多相关Python内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部