当前位置: 首页 > 知识库问答 >
问题:

在Python中使用Selenium下载文件

巴星华
2023-03-14

我正试图从一个包含阿根廷代表投票的公共网站自动下载excel文件。例如,来自以下页面:https://votaciones.hcdn.gob.ar/votacion/4108

我收到以下消息:

selenium.common.exceptions。ElementClickInterceptedException:消息:元素在点(229480)处不可单击,因为另一个元素使其模糊

如果我尝试通过< code > driver . execute _ script(' JavaScript:export excel();'在页面内执行下载excel特定脚本)什么都不会发生。

有什么办法能让它工作吗?

共有3个答案

吕学
2023-03-14

下面是一个使用自动编辑器的示例。友情链接: https://www.autoitscript.com/forum/topic/153520-iuiautomation-ms-framework-automate-chrome-ff-ie/

#include <GUIConstantsEx.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <EditConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>
#include <WinAPISysWin.au3>
#include <AD.au3>
#include <Array.au3>
#include "UIAWrappers.au3"
#include <FileConstants.au3>
#include <WinAPIFiles.au3>
#include <GuiListBox.au3>
#include <Word.au3>
#include <File.au3>
#include <Excel.au3>


Opt("WinWaitDelay", 150)
Opt("WinTitleMatchMode", 2)
Opt("WinDetectHiddenText", 1)
Opt("MouseCoordMode", 2)
Opt("SendKeyDelay", 10)
Opt("GUIResizeMode", 1)
HotKeySet("^!x", "MyExit")

Global  $Web, $hWnd

$Web = "https://votaciones.hcdn.gob.ar/votacion/4108"

ShellExecute("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", "--new-window --force-renderer-accessibility " & $Web, "", "")
WinWait("DSE - Voto Electrónico - Google Chrome", "", 8)
$hWnd = WinGetHandle("DSE - Voto Electrónico - Google Chrome")
WinActivate($hWnd)
WinSetState($hWnd, "", @SW_MAXIMIZE)
Sleep(7000); Give time for the webpage to load (out of country)

Local $oP6=_UIA_getObjectByFindAll($UIA_oDesktop, "Title:=DSE - Voto Electrónico - Google Chrome;controltype:=UIA_PaneControlTypeId;class:=Chrome_WidgetWin_1", $treescope_children)
_UIA_Action($oP6,"setfocus")
Local $oP5=_UIA_getObjectByFindAll($oP6, "Title:=DSE - Voto Electrónico;controltype:=UIA_DocumentControlTypeId;class:=Chrome_RenderWidgetHostHWND", $treescope_children)
_UIA_Action($oP5,"setfocus")

;~ First find the object in the parent before you can do something
Local $oUIElement=_UIA_getObjectByFindAll("XLSX.mainwindow", "title:=XLSX;ControlType:=UIA_HyperlinkControlTypeId", $treescope_subtree)
Local $oUIElement=_UIA_getObjectByFindAll($oP5, "title:=XLSX;ControlType:=UIA_HyperlinkControlTypeId", $treescope_subtree)
_UIA_Action($oUIElement, "setfocus")
_UIA_Action($oUIElement, "highlight")
_UIA_Action($oUIElement, "activate")
_UIA_Action($oUIElement, "leftclick")

Func MyExit()
    Exit
EndFunc   ;==>MyExit
赖杰
2023-03-14

最后,我可以完成它。我使用了本页中提出的程序。但必须通过< code > options . set _ preference(" browser . helper apps . never ask . savetodisk "," application/octet-stream,application/vnd . ms-excel ")指令更改< code > options . set _ preference(" browser . helper apps . never ask . savetodisk "," application/vnd . openxml formats-office document . spreadsheetml . sheet ")。

工作示例是:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.set_preference("browser.download.folderList",2)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference("browser.download.dir","/data")
options.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

with webdriver.Firefox(options=options) as driver:
    
    driver.get('https://votaciones.hcdn.gob.ar/votacion/4108')
    driver.execute_script('javascript:exportExcel();')
阮梓
2023-03-14

你需要点击下载按钮,然后使用Autoit或其他ui自动工具自动创建下载对话框。

 类似资料:
  • 问题内容: 我正在尝试使用selenium从网站下载pdf文件,但我能够打开文件,但无法使用代码自动下载。 码: 请提出建议。先感谢您 问题答案: 以上问题现已解决

  • 问题内容: OK,所以我正在尝试使用Selenium导出文件。我的浏览器是IE。当我 单击导出按钮时,将出现一个本机Windows对话框。 弹出的图片 在此处输入图片说明 我必须单击“保存”按钮。为此,我尝试使用AutoIT但 不起作用。 这没有用。因此,我决定使用Robot类并执行键盘单击Atl + S,因为这还将使浏览器能够保存文件。那 也不起作用。 我认为Web驱动程序存在一些问题,因为我尝

  • 问题内容: from selenium import webdriver from selenium.webdriver.chrome.options import Options 但这仅会导致以下错误: 那么如何解决呢?我是否必须使用这种“功能”?如果是这样,究竟如何? 问题答案: 试试这个。在Windows上执行 如何在Chrome中控制具有SeleniumPython绑定的文件的下载

  • 我知道这个问题已经被问了好几次了,但这些问题的解决方案对我的情况没有帮助。 我想从这个网站下载一个数据集:https://datadashboard.fda.gov/ora/cd/inspections.htm 以下是“数据集”的HTML: 以下是“整个检测数据集”的 HMTL: 下面是我获取数据集的代码: 我也尝试过: 但我得到这个错误: 文件“FDAComplianceDashboardIns

  • 问题内容: 这是我的情况:我必须登录到一个网站并从那里下载CSV,而从linux服务器无头。该页面使用JS,没有它就无法工作。 经过一些研究,我选择了Selenium和PhantomJS。登录,设置CSV参数并使用Selenium / PhantomJS / Py3查找下载按钮没有问题,实际上令人称奇。 但是单击下载按钮没有任何作用。经过一番研究,我发现PhantomJS似乎不支持下载对话框和下载

  • 问题内容: 这是此网页中的链接 https://www.shareinvestor.com/prices/price_download.html#/?type=price_download_all_stocks_bursa。 然后将其保存到此目录”/home/vinvin/shKLSE/(我正在使用 pythonaywhere)。然后将其解压缩,然后将csv文件解压缩到目录中。 该代码一直运行到最