当前位置:   article > 正文

Python selenium与pyautogui控制浏览器实现modis数据自动下载_pyautogui操作当前浏览器

pyautogui操作当前浏览器

目录

序言:

准备工作:

基本思路:

完整代码:


序言:

        上次提到通过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. def modis_get(self):
  2. n = 0
  3. with open('data.txt', 'r') as f:
  4. for line in f.readlines():
  5. if n == 0:
  6. self.driver.get(line)
  7. pyautogui.typewrite(self.username, 0.1)
  8. pyautogui.press('tab')
  9. pyautogui.typewrite(self.password, 0.1)
  10. pyautogui.press('tab')
  11. time.sleep(0.5)
  12. pyautogui.press('enter')
  13. n += 1
  14. print(f'开始下载第{n}个数据')
  15. else:
  16. self.driver.get(line)
  17. n += 1
  18. print(f'开始下载第{n}个数据')

2、下载路径管理,浏览器默认的下载路径是C:\Users\86182\Downloads,如果数据量大最好更改路径下载便于管理。

  1. def path_change(self, path=r'C:\Users\86182\Downloads'):
  2. chrome_options = webdriver.ChromeOptions()
  3. prefs = {'profile.default_content_settings.popups': 0, # 防止保存弹窗
  4. 'download.default_directory': path, # 设置默认下载路径
  5. "profile.default_content_setting_values.automatic_downloads": 1 # 允许多文件下载
  6. }
  7. chrome_options.add_experimental_option('prefs', prefs)
  8. self.driver = webdriver.Chrome(options=chrome_options)

3、关于浏览器下载路径的设置,一定要先执行设置方法,再执行下载方法。

  1. def main_get(self):
  2. self.path_change(self.new_path)
  3. self.modis_get()

完整代码:

  1. '''****************selenium模拟登录并实现通过浏览器下载数据**********************
  2. 作者:荷兰豆养殖专家
  3. ps:该方法纯属歪门邪道
  4. '''
  5. from selenium import webdriver
  6. import pyautogui
  7. import time
  8. class Selenium_modis_get(object):
  9. def __init__(self, new_path=None, username=None, pd=None, target_path=None):
  10. self.new_path = new_path
  11. self.username = username
  12. self.password = pd
  13. self.target_path = target_path
  14. def modis_get(self):
  15. n = 0
  16. with open(self.target_path, 'r') as f:
  17. for line in f.readlines():
  18. if n == 0:
  19. self.driver.get(line)
  20. pyautogui.typewrite(self.username, 0.1)
  21. pyautogui.press('tab')
  22. pyautogui.typewrite(self.password, 0.1)
  23. pyautogui.press('tab')
  24. time.sleep(0.5)
  25. pyautogui.press('enter')
  26. n += 1
  27. print(f'开始下载第{n}个数据')
  28. else:
  29. self.driver.get(line)
  30. n += 1
  31. print(f'开始下载第{n}个数据')
  32. def path_change(self, path=r'C:\Users\86182\Downloads'):
  33. chrome_options = webdriver.ChromeOptions()
  34. prefs = {'profile.default_content_settings.popups': 0, # 防止保存弹窗
  35. 'download.default_directory': path, # 设置默认下载路径
  36. "profile.default_content_setting_values.automatic_downloads": 1 # 允许多文件下载
  37. }
  38. chrome_options.add_experimental_option('prefs', prefs)
  39. self.driver = webdriver.Chrome(options=chrome_options)
  40. def main_get(self):
  41. self.path_change(self.new_path)
  42. self.modis_get()
  43. if __name__ == '__main__':
  44. modis = Selenium_modis_get(target_path='你的目标文件路径(绝对)',new_path=r'你希望下载的路径', username='你的username', pd='')
  45. modis.main_get()
  46. # modis.path_change()#数据下载完之后单独执行此代码即可改回默认下载路径(modis.main_get()注释掉)

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

闽ICP备14008679号