gpt4 book ai didi

excel - 使用 Python Selenium 下载 Excel 文件

转载 作者:行者123 更新时间:2023-12-04 20:27:06 26 4
gpt4 key购买 nike

我创建了简单的 python 用于从互联网下载 excel 文件,我正在使用 python 和 selenium 和 Chromedriver,问题是,当下载完成并保存文件时,我无法读取该 excel 文件(尝试使用 Libreoffice、MsExcel),但是当我手动下载没有 Selenium 的文件时,可以读取它,当我尝试使用 python xlrd 读取这些文件时错误是 zipfile.BadZipFile: Bad magic number for file header
一开始我以为下载还没有完成,因为太快关闭浏览器,试图增加sleep(20但结果是一样的。

在我一直在努力的过程中,我有什么遗漏的吗?

这是我的python脚本。

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

def every_downloads_chrome(driver):
if not driver.current_url.startswith("chrome://downloads"):
driver.get("chrome://downloads/")
return driver.execute_script("""
var items = downloads.Manager.get().items_;
if (items.every(e => e.state === "COMPLETE"))
return items.map(e => e.fileUrl || e.file_url);
""")

uri = "https://cfs.ojk.go.id/cfs/ReportViewerForm.aspx?BankCode=PT.+BPR+Cikarang+Raharja&Month=3&Year=2019&FinancialReportPeriodTypeCode=R&FinancialReportTypeCode=BPK-900-000002"
option = webdriver.ChromeOptions()
option.add_argument("--incognito")
option.add_argument("--window-size=400,400")
option.add_argument('disable-component-cloud-policy')
option.add_experimental_option("prefs", {
"download.prompt_for_download": False,
"download.directory_upgrade": False,
"safebrowsing.enabled": True
})
browser = webdriver.Chrome(executable_path=chromedriver_path, options=option)
browser.get(uri)
timeout = 20
try:
WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="CFSReportViewer_ctl05_ctl04_ctl00_ButtonImg"]')))
except TimeoutException:
browser.quit()

#Download the file by execute JS Command
browser.execute_script("$find('CFSReportViewer').exportReport('EXCELOPENXML');")

#wait until download is finish
WebDriverWait(browser, 120,1).until(every_downloads_chrome)

#break 2 second and quit
time.sleep(2)
browser.quit()

我正在尝试从该站点下载 excel
https://cfs.ojk.go.id/cfs/ReportViewerForm.aspx?BankCode=PT.+BPR+Cikarang+Raharja&Month=3&Year=2019&FinancialReportPeriodTypeCode=R&FinancialReportTypeCode=BPK-900-000002

顺便说一句,我正在使用带有 Chrome 的 Mac OS 77和 Chromedrive 77.0.3865.40
这是案例视频
https://drive.google.com/file/d/1N6q66AVpo4XtrZemxoD5E94xUohzcaNx/view

更新

这是我的环境,我正在使用 virtualenv ro 运行此脚本并收到下载文件的错误消息,但是当我尝试运行 whitout virtualenv 时,可以读取文件而不会出现单一错误,这让我确信那是我的 virtualenv。

最佳答案

如果我将 javascript 更改为单击 a,我没有问题。标签

browser.execute_script('document.querySelector("[alt=Excel]").click();')

关于excel - 使用 Python Selenium 下载 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58099754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com