目錄
序言:
準(zhǔn)備工作:
基本思路:
完整代碼:
序言:
? ? ? ? 上次提到通過modis連接下載數(shù)據(jù)的方式有很多,本文選擇selenium模擬登錄的方式通過谷歌瀏覽器下載,但是并不推薦這種方法,只是恰好學(xué)習(xí)了selenium的一些操作,所以寫這個(gè)代碼做了一些測(cè)試。
? ? ? ? 本文章只需要具備一定的selenium與pyautogui基礎(chǔ)知識(shí),需要下載好selenium庫以及瀏覽器驅(qū)動(dòng)。(本文采用的是谷歌瀏覽器,python版本為3.10)
準(zhǔn)備工作:
- 首先得在NASA官網(wǎng)上注冊(cè)一個(gè)賬號(hào),有了賬號(hào)才能實(shí)現(xiàn)登錄
NASA官網(wǎng)賬號(hào)注冊(cè)https://urs.earthdata.nasa.gov/users/new
- 安裝selenium庫以及pyautogui(pip install 庫名)
基本思路:
1、當(dāng)我們第一次訪問連接時(shí),會(huì)彈出登錄窗口,但是我們不用捕捉元素,光標(biāo)已經(jīng)在用戶名里面,所以直接使用pyautogui執(zhí)行自動(dòng)登錄操作。(重點(diǎn)注意如果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}個(gè)數(shù)據(jù)')
else:
self.driver.get(line)
n += 1
print(f'開始下載第{n}個(gè)數(shù)據(jù)')
2、下載路徑管理,瀏覽器默認(rèn)的下載路徑是C:\Users\86182\Downloads,如果數(shù)據(jù)量大最好更改路徑下載便于管理。文章來源:http://www.zghlxwxcb.cn/news/detail-513324.html
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, # 設(shè)置默認(rèn)下載路徑
"profile.default_content_setting_values.automatic_downloads": 1 # 允許多文件下載
}
chrome_options.add_experimental_option('prefs', prefs)
self.driver = webdriver.Chrome(options=chrome_options)
3、關(guān)于瀏覽器下載路徑的設(shè)置,一定要先執(zhí)行設(shè)置方法,再執(zhí)行下載方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-513324.html
def main_get(self):
self.path_change(self.new_path)
self.modis_get()
完整代碼:
'''****************selenium模擬登錄并實(shí)現(xiàn)通過瀏覽器下載數(shù)據(jù)**********************
作者:荷蘭豆養(yǎng)殖專家
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}個(gè)數(shù)據(jù)')
else:
self.driver.get(line)
n += 1
print(f'開始下載第{n}個(gè)數(shù)據(jù)')
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, # 設(shè)置默認(rèn)下載路徑
"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='你的目標(biāo)文件路徑(絕對(duì))',new_path=r'你希望下載的路徑', username='你的username', pd='')
modis.main_get()
# modis.path_change()#數(shù)據(jù)下載完之后單獨(dú)執(zhí)行此代碼即可改回默認(rèn)下載路徑(modis.main_get()注釋掉)
到了這里,關(guān)于Python selenium與pyautogui控制瀏覽器實(shí)現(xiàn)modis數(shù)據(jù)自動(dòng)下載的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!