使用Python Selenium Chromedri时出现不一致的下载“失败路径过长”错误

2024-04-19 16:38:27 发布

您现在位置:Python中文网/ 问答频道 /正文

堆栈:Windows 8.1, Python 3.4.3.4, Selenium 2.46, Chromedriver 2.16

我使用Selenium Python绑定和Chromedriver自动从以下URL下载:r'http://financials.morningstar.com/'

我设置了以下chromedriver首选项:

chromeOptions = webdriver.ChromeOptions()
prefs = {'download.default_directory':symbol_dir}
chromeOptions.add_experimental_option('prefs', prefs)
chromeOptions.add_extension(self.chromeUBlock_path)  
chromedriver_path = self.chromedriver_path

此外,我还设置了以下selenium代码来运行下载,它可以正常工作并下载到正确的文件位置等:

^{pr2}$

但是,使用以下缩写运行下载时(只需将balance-sheet替换为income-statement,如下所示):

    BS_anl_statement = 'balance-sheet'
    BS_anl_abbrev    = 'bs'

剩下的Selenium代码和我得到的下载错误完全一样: Failed-Path Too Long

这很奇怪,因为实际的文件路径并不太长。事实上,我在3个不同的目录中测试了下载,每个目录的文件路径都比上一个目录短。最后一个示例路径是:r"C:\mstar_data\\"

我卡住了。两次下载尝试之间的唯一区别是实际的CSV链接。但即使在这种情况下,Income-Statement下载url实际上也比Balance-Sheet长,所以我又被卡住了。它们在这里:

I/S CSV url: http://financials.morningstar.com/ajax/ReportProcess4CSV.html?&t=XNAS:ZUMZ&region=usa&culture=en-US&cur=&reportType=is&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=573205&denominatorView=raw&number=3

B/S CSV url: http://financials.morningstar.com/ajax/ReportProcess4CSV.html?&t=XNYS:A&region=usa&culture=en-US&cur=&reportType=bs&period=12&dataType=A&order=asc&columnYear=5&curYearPart=1st5year&rounding=3&view=raw&r=558981&denominatorView=raw&number=3

任何关于这种不一致性的帮助都将是一个巨大的帮助,绝对感谢。谢谢。在


Tags: 文件csvpath路径目录comhttpurl
1条回答
网友
1楼 · 发布于 2024-04-19 16:38:27

我找到了解决这个问题的方法。@Skandigraun是对的,有一段代码试图过早地使用下载的文件。在

我使用Advanced Uninstaller清除所有临时文件、internet历史记录等。 我重新启动了电脑。 我修改了以下关于Skandigraun注释的代码块:

for in range(1, 10, 1):
    time.sleep(i/50)
    if os.path.isfile(anl_file_string)==True:
            break 

收件人:

^{pr2}$

我补充道:

finally:
    IS_anl.quit()

现在代码运行起来更加稳定。我相信测试文件是否存在的os调用发生得太快/太频繁,导致下载失败。我将finally语句添加到try/except循环中以关闭浏览器,无论发生什么情况。这可以防止脚本在访问站点时出现问题、超时错误等时挂起

相关问题 更多 >