2017-02-13 30 views
4

我试图从网页下载文件。 文件的链接被php实现:~/download.php?id=~Python:从使用php实现的链接下载文件

一个文件的下载,可以点击链接或右键单击并选择在Web浏览器的菜单,"save this file"。我使用seleniumphantomjs。通过“find_element”获得与标签“a”的链接是成功的。我执行了点击或右键点击,的ActionChains,但它无法下载该文件。通过搜索网页,它看起来像phantomjs不支持下载文件。

我认为作为第二种方式使用的是使用firefoxchrome,它看起来像支持下载文件。请给我一个建议,这种方式是否最好。我正在运行raspberry pi b+上的程序。 非常感谢。

回答

3

下载文件最简单的方法:如果你需要下载文件

import urllib 
url = "http://domain.com/~/download.php?id=~" 
path_to_file = "/local/folder/where/you/want/to/save/file/file_name" 

的Python 2.x的

urllib.urlretrieve(url, path_to_file) 

Python 3.x都有

urllib.request.urlretrieve(url, path_to_file) 

selenium

火狐

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile 
profile = FirefoxProfile() 
profile.set_preference("browser.download.folderList",2) 
profile.set_preference("browser.download.manager.showWhenStarting",False) 
profile.set_preference("browser.download.dir", '/download/folder/by/default') 
profile.set_preference("browser.helperApps.neverAsk.saveToDisk",file_MIME_type) 
driver = webdriver.Firefox(firefox_profile=profile) 

from selenium import webdriver 
download_dir = "/download/folder/by/default" 
chrome_options = webdriver.ChromeOptions() 
preferences = {"download.default_directory": download_dir , 
                      "directory_upgrade": True, 
                      "safebrowsing.enabled": True } 
chrome_options.add_experimental_option("prefs", preferences) 
driver = webdriver.Chrome(chrome_options=chrome_options)