Форум сайта python.su
Здравствуйте, уважаемые форумчане. У меня возникла необходимость в создании скрипта автоматической загрузки файлов с сайта карты расположения метеорных станций.
Возникла большая проблема при работе с выпадающим списком дат. Мне нужен поиск ПО СОДЕРЖИМОМУ, который не работает…
Вот некоторые ресурсы, на которые я опирался:
1. Как выбрать значение выпадающего меню с помощью Selenium с помощью Python
2. Проблемы с select (выпадающий список)
3. Python - как найти элемент из исчезающего раскрывающегося списка с помощью селена
4. Selenium обрабатывает раскрывающийся список
Вот единственный рабочий пример:
import time from selenium import webdriver driver = webdriver.Chrome() driver.get('https://tammojan.github.io/meteormap/') #Work it! time.sleep(2) driver.find_element_by_xpath('/html/body/div[1]/select/option[100]').click() time.sleep(10)
Офлайн
VasiliySУдивительно,если отдалить карту скопления линий в зоне 51, англии, и еще там скопления в разных местах…
карты расположения метеорных станций.
Офлайн
VasiliySкакие данные нужно?Вот эти ссылка на данные
У меня возникла необходимость в создании скрипта автоматической загрузки файлов с сайта карты расположения метеорных станций.
Офлайн
xam1816
Прикреплённый файлы:
Снимок экрана от 2021-10-14 18-45-34.png (74,4 KБ)
Офлайн
VasiliySвот так у меня выполнились все условия,только нужно отключить подтверждение загрузки
1. Скриншот карты с метеорами, обнаруженными моей камерой.
2. klm-файлы с 3D расположением траекторий метеоров
3. Как я уже упоминал, csv-файл с данными о метеорах.
from selenium import webdriver import time driver = webdriver.Firefox() page = driver.get('https://tammojan.github.io/meteormap/') element_input = driver.find_element_by_xpath('//*[@id="stationsFilter"]') element_download_csv = driver.find_element_by_xpath('/html/body/div[4]/button[2]') element_download_kml = driver.find_element_by_xpath('/html/body/div[4]/button[3]') element_count_meteors = driver.find_element_by_xpath('//*[@id="rowcount"]') element_input.send_keys('RU000Q') while element_count_meteors.text == '0': time.sleep(10) driver.save_screenshot('selenium_screen.png') element_download_csv.click() time.sleep(5) element_download_kml.click() #time.sleep(30) #driver.close()
VasiliyS
Мне нужен поиск ПО СОДЕРЖИМОМУ, который не работает…
select = Select(driver.find_element_by_xpath('//*[@id="datasetDropdown"]')) time.sleep(10) select.select_by_visible_text("20181223_solrange_271.0-272.0")
Отредактировано xam1816 (Окт. 16, 2021 00:35:37)
Офлайн
xam1816Спасибо большое! Сейчас же все проверю.
nium_
Офлайн
Спасибо большое за помощь! Я проверил работу кода. Добавил еще один элемент: фильтрацию по станции, т.к. загружались не те данные - обнаружения со всей карты.
#!/usr/bin/python3.8 from selenium import webdriver from selenium.webdriver.support.select import Select import time Station = 'RU000Q' date = "20211008_solrange_195.0-196.0" driver = webdriver.Chrome() page = driver.get('https://tammojan.github.io/meteormap/') element_station_search = driver.find_element_by_xpath('//*[@id="stationSearch"]') element_station_filter = driver.find_element_by_xpath('//*[@id="stationsFilter"]') element_download_csv = driver.find_element_by_xpath('/html/body/div[4]/button[2]') element_download_kml = driver.find_element_by_xpath('/html/body/div[4]/button[3]') element_count_meteors = driver.find_element_by_xpath('//*[@id="rowcount"]') element_station_search.send_keys(Station) element_station_filter.send_keys(Station) select = Select(driver.find_element_by_xpath('//*[@id="datasetDropdown"]')) time.sleep(5) select.select_by_visible_text(date) time.sleep(10) if element_count_meteors.text == '0': driver.close() driver.save_screenshot('selenium_screen.png') element_download_csv.click() time.sleep(5) element_download_kml.click() time.sleep(30) driver.close()
#!/usr/bin/python3.8 #WARNING! INSTALL selenium-DRIVER TO YOUR BROWSER!!! import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select import sys #ПРИМЕРНО В 17:00 ВСЕ ПЕРЕСТАЛО РАБОТАТЬ ПРОБЛЕМЫ С ПИТОНОМ ИЛИ БРАУЗЕРОМ #============================================================ #Adjustment script #ID stantion: Station = "RU000Q" #Init web-browser driver = webdriver.Chrome() driver.set_window_size(1600, 2048) #driver.maximize_window() #etc Zoom = 7 Date = sys.argv[1] #Folder for screenshot fold = "/home/vas/RMS_Processing/" + Station + "_" + Date + "screenie.png" #============================================================ #Goto link driver.get('https://tammojan.github.io/meteormap/'); #Waiting time.sleep(5) #Select date driver.find_element_by_xpath("//*[@id='datasetDropdown']/option[contains(text(),'%s')]" %Date).click() #Find my stantion driver.find_element(By.XPATH, '//*[@id="stationSearch"]').send_keys(Station) #Filter my stantion driver.find_element(By.XPATH, '//*[@id="stationsFilter"]').send_keys(Station) #Waiting time.sleep(3) #Select ZOOM n=1 while(n<=8-Zoom): driver.find_element(By.XPATH, '//*[@id="mapid"]/div[2]/div[1]/div[1]/a[2]').click() time.sleep(3) n = n + 1 #Waiting time.sleep(15) if driver.find_element_by_xpath('//*[@id="rowcount"]').text == '0': driver.close() #Screenshot driver.find_element_by_tag_name('body').screenshot(fold) #Download *.csv and *.klm - files driver.find_element(By.XPATH, '//button[text()="Download selection as CSV"]').click() driver.find_element(By.XPATH, '//button[text()="Download selection as KML"]').click() #Waiting time.sleep(5) #Close browser driver.quit()
#Select date driver.find_element_by_xpath("//*[@id='datasetDropdown']/option[contains(text(),'%s')]" %Date).click()
date = "20211008"
date = "20211008_solrange_195.0-196.0"
Офлайн
Кажется мне удалось сделать работу скрипта устойчивей. Я изменил порядок заполнения полей. Ввел даты за весь месяц. Все совпало!
#!/usr/bin/python3.8 #WARNING! INSTALL selenium-DRIVER TO YOUR BROWSER!!! import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select import sys #============================================================ #Adjustment script #ID stantion: Station = "RU000Q" #Init web-browser driver = webdriver.Chrome() driver.set_window_size(1600, 2048) #driver.maximize_window() #etc Zoom = 7 Date = sys.argv[1] #Folder for screenshot fold = "/home/vas/RMS_Processing/" + Station + "_" + Date + "screenie.png" #============================================================ #Goto link driver.get('https://tammojan.github.io/meteormap/'); #Waiting time.sleep(5) #Find my stantion driver.find_element(By.XPATH, '//*[@id="stationSearch"]').send_keys(Station) #Filter my stantion driver.find_element(By.XPATH, '//*[@id="stationsFilter"]').send_keys(Station) #Select date S_date = driver.find_element_by_xpath("//*[@id='datasetDropdown']/option[contains(text(),'%s')]" %Date) #Waiting time.sleep(5) S_date.click() #Waiting time.sleep(3) #Select ZOOM n=1 while(n<=8-Zoom): driver.find_element(By.XPATH, '//*[@id="mapid"]/div[2]/div[1]/div[1]/a[2]').click() time.sleep(3) n = n + 1 #Waiting time.sleep(15) if driver.find_element_by_xpath('//*[@id="rowcount"]').text == '0': driver.close() #Screenshot driver.find_element_by_tag_name('body').screenshot(fold) #Download *.csv and *.klm - files driver.find_element(By.XPATH, '//button[text()="Download selection as CSV"]').click() driver.find_element(By.XPATH, '//button[text()="Download selection as KML"]').click() #Waiting time.sleep(5) #Close browser driver.quit()
Отредактировано VasiliyS (Окт. 22, 2021 14:11:40)
Офлайн