当前位置: 首页 > 面试题库 >

如何在Python中读取Selenium Webdriver下载的文件

龙玺
2023-03-14
问题内容

我在python中将selenium与webdriver一起使用,以从站点下载csv文件。该文件将下载到指定的下载目录中。这是我的代码的概述

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False)
fp.set_preference("browser.download.dir",'xx/yy')
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream")
driver = webdriver.Firefox(fp)
driver.get('url')

我需要print将此csv的内容发送到终端。许多具有随机名称的相似文件将被下载到同一文件夹中,因此无法通过文件名访问文件,因为我不知道它将是什么提前


问题答案:

这个答案是由以前的堆栈溢出问题,答案以及本文中的注释组成的,所以谢谢大家。

我为这个解决方案结合了selenium webdriver和python
request模块。我实质上是使用Selenium登录该站点的,从webdriver会话中复制了cookie,然后使用了request.get(url,cookies
= webdriver_cookies)来获取文件。

这是我的解决方案的要点

fp = webdriver.FirefoxProfile() 
fp.set_preference("browser.download.folderList", 2)
fp.set_preference("browser.download.manager.showWhenStarting", False) 
fp.set_preference("browser.download.dir",'xx/yy') 
fp.set_preference('browser.helperApps.neverAsk.saveToDisk', "text/plain, application/vnd.ms-excel, text/csv, text/comma-separated-values, application/octet-stream") 
driver = webdriver.Firefox(fp)

# selenium login code ...

driver_cookies = driver.get_cookies()
cookies_copy = {}
for driver_cookie in driver_cookies:
    cookies_copy[driver_cookie["name"]] = driver_cookie["value"]
r = requests.get('url',cookies = cookies_copy)
print r.text

我希望这可以帮助某人



 类似资料:
  • 问题内容: 我正在为具有许多Flash文件的网站制作Greasemonkey脚本。我想对闪存进行哈希处理,问题是闪存文件最大为10 MB。 这很慢;我希望只能获取要散列的前80KB。最终结果将是一种将某些包含有害内容的Flash文件列入黑名单的简便方法。我的脚本如何仅抓取文件的前80 KB(或大约80 KB)? 问题答案: 发送的头在你的AJAX请求。 例如: (对于与目标页面位于同一域中的文件。

  • 我试图读取一个FASTA文件,然后找到特定的motif(字符串)并打印出它出现的顺序和次数。FASTA文件只是以标题行开始的一系列序列(字符串),标题或新序列开始的签名是“” 属性错误:“str”对象没有属性“下一个” 我不确定这是怎么回事。

  • 我尝试读取数据块中的dbc文件(从s3存储桶装载)。文件路径是: 如何使用火花读取此文件? 我尝试了下面的代码: 但它生成并错误: 谢谢帮忙!

  • 问题内容: 在史前时代(Python 1.4)中,我们做到了: 在Python 2.1之后,我们做到了: 在Python 2.3中获得便利的迭代器协议之前,它可以做到: 我看过一些使用更详细的示例: 这是首选的方法吗? [edit]我知道with语句可以确保关闭文件…但是为什么文件对象的迭代器协议中没有包含该语句呢? 问题答案: 偏爱以下原因的确有一个原因: 我们都为CPython的相对确定性的引

  • 问题内容: 我正在使用python 2.7请求模块使用以下代码下载二进制文件,如何使此代码从部分下载的文件中“自动恢复”下载。 如果可能的话,我宁愿只使用模块来实现这一目标。 问题答案: 如果Web服务器支持范围请求,则可以将Range标头添加到您的请求中: 您将收到StartPos和StopPos之间的部分。如果不知道StopPos,请使用: 因此您的代码将是:

  • 我是selenium的新手,我想使用selenium chrome Web驱动程序在特定的自定义文件夹中下载文件。默认情况下,该文件正在浏览器指定的下载路径中下载。任何一个建议在C#Selenium的自定义路径中下载文件的最佳解决方案。