ETL - как войти на сайт, ввести некоторые параметры и экспортировать файл (или веб-данные) в базу данных - PullRequest
0 голосов
/ 08 апреля 2020

Я ищу несколько рекомендаций:

Мне нужно войти на веб-сайт, ввести некоторые данные и экспортировать файл для этих данных для загрузки в базу данных.

I ' Я пытался использовать инструменты для ETL, такие как Octoparse. у меня проблема в том, что с ETL я знаю, что не могу воспроизвести «экспорт в CSV», который делает веб-сайт, поэтому я могу взять информацию из показанных таблиц, проблема в том, что данные свернуты в Веб-сайт. вот пример:

enter image description here

в «1» Мне нужно ввести от даты до даты проблема заключается в том, что после фильтрации здесь таблицы свернуты с и мне нужно открыть с помощью «2»

У меня есть возможность вручную экспортировать файл в формате CSV, нажав «3», а затем импортировать его в базу данных, но на самом деле это требует некоторой дополнительной работы. какой тип ETL я мог бы использовать для выполнения sh этого действия? Основная цель - экспортировать эти данные в базу данных SQL без ручного вмешательства.

Веб-сайт не имеет API для подключения.

1 Ответ

1 голос
/ 08 апреля 2020

Таким образом, поскольку нет API или других средств для их непосредственного извлечения, вы можете использовать Selenium для имитации браузера и нажатия кнопок. Это должно войти в систему, изменить желаемую дату начала, отфильтровать, а затем экспортировать.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
import time

# Enter you parameters
user = 'username@gmail.com'
pwd = 'password'
startDate = '01/03/2020'

# Open page
driver = webdriver.Chrome('C:/chromedriver_win32/chromedriver.exe') #<-- put the path to chromedriver.exe on your machine here.
driver.get('https://www.trinks.com/BackOffice/Relatorios/Financeiro')

# Input username, password and click enter
driver.find_element_by_id("fEmail").send_keys(user)
driver.find_element_by_id("fSenha").send_keys(pwd)
driver.find_element_by_css_selector('button[title="Entrar nos Trinks"]').click()


# Remove date and enter new start date and click filter
WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.ID, 'DataInicio')))
driver.find_element_by_id('DataInicio').send_keys(Keys.CONTROL + "a");
driver.find_element_by_id('DataInicio').send_keys(Keys.DELETE);    
driver.find_element_by_id("DataInicio").send_keys(startDate)
driver.find_element_by_css_selector('input[title="Filtrar"]').click()


# Click export and wait to allow it to start download
driver.find_element_by_css_selector('input[title="Exportar"]').click()
time.sleep(15)

# Close browser
driver.close()    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...