我想从一个带有碎片的网站下载一个文件,其中文件是在单击按钮后生成的,并由随机 URL 提供。单击该按钮将显示浏览器的文件保存对话框。
我可以找到并单击按钮
exportButton = browser.find_by_id("exportButton")
exportButton.click()
但是如何保存具有特定名称的文件?
由于 URL 是随机的,永远不会在页面的源代码中,并且 Button 是触发 JS 而不是链接的按钮,因此通过发送带有 URL 的请求并处理响应来使用 splinter 下载文件的方法不起作用。我无法提供网址。单击可能向服务器发送Ajax请求的按钮,该服务器响应文件是获取它的唯一方法。我在无头模式下使用 Chrome 网络驱动程序。
所以我不知道在下载之前更改名称的方法。 但是我已经能够自动下载文件,然后更改文件名。
import splinter
from selenium import webdriver
from shutil import copyfile
options = webdriver.ChromeOptions()
prefs = {
"download.default_directory" : "C:/Users/joshuaclew/Downloads/",
"download.directory_upgrade": "true",
"download.prompt_for_download": "false",
"disable-popup-blocking": "true"
}
chrome_options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", prefs)
chrome_options.add_argument("--disable-infobars")
browser = splinter.Browser('chrome', options=chrome_options)
browser.driver.maximize_window()
browser.visit('http://www.someurlhere.com')
exportButton = browser.find_by_id("exportButton")
exportButton.click()
download_path = 'C:/Users/joshuaclew/Downloads/'
old_file_name = download_path+'old_file_name'
new_file_name = download_path+'new_file_name'
copyfile(old_file_name, new_file_name)