我在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中下载文件从来不是一个好主意。你不能控制下载文件的位置和文件名,如果你想知道,那么你必须使用肮脏的黑客。这取决于浏览器及其设置,以及以前是否下载过同一文件。
另外,你必须注意在下载后删除文件,否则,同一文件的许多副本将垃圾邮件你的硬盘驱动器,直到它完全充满。
如果可能的话,你应该打电话给
然后自己处理下载,使用常规方法,而不是Selenium。
您可以从该位置获取最后下载的文件,然后读取该文件:
然后你可以从这个文件中读取。希望不会有多个文件通过并行进程到达那里。
编辑: 刚才看到有评论说有多个实例可以下载,所以您可以使用urllib,并使用其url下载文件:
这个答案是由之前的堆栈溢出问题、答案和评论组成的,谢谢大家。
我将selenium webdriver和python请求模块结合在一起实现了这个解决方案。我基本上是使用selenium登录站点,从webdriver会话复制cookies,然后使用requests.get(url,cookies=webdriver_cookies)获取文件。
这是我解决问题的要点
我希望这能帮助某人
相关问题 更多 >
编程相关推荐