web-scraping - ETL - 如何进入网站,输入一些参数并将文件(或网络数据)导出到数据库
问题描述
我正在寻找一些建议:
我需要进入一个网站,输入一些数据,然后导出文件以将该数据加载到数据库中。
我一直在尝试使用诸如 Octoparse 之类的 ETL 工具。我遇到的问题是,使用 ETL,我知道我无法复制网站所做的“导出到 csv”,所以我可以从显示的表格中获取信息,问题是数据在网站。这里有一个例子:
在“1”中,我需要从一个到日期输入问题是,在此处过滤后,表格被折叠,我必须用“2”打开
我可以选择通过单击“3”手动将文件导出为 CSV,然后将其导入数据库,但实际上它确实需要一些额外的工作。我可以使用哪种类型的 ETL 来完成此活动?主要目标是将这些数据导出到 SQL 数据库而无需人工干预。
该网站没有用于连接的 API。
解决方案
因此,由于没有 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()
推荐阅读
- node.js - Jest js 安装 - 出现错误 - npm ERR!没有'new'就不能调用类构造函数
- css - 使用 jQueryUI datepicker 时无法更改输入背景颜色
- dart - Flutter 在另一个屏幕中使用 PageController
- java - 使用 JSR-107 注释清除缓存
- sql - R读取本地.mdf文件
- c# - 当所有任务完成时通知消费者而不阻塞线程
- amazon-web-services - AWS Apigateway 确实有任何静态 IP 地址
- c# - Linq 查询未编译
- angular - 如何从应用路由模块中的 cookie/服务中获取价值
- javascript - 空表格单元格