我的脚本有效,但是它将文件保存为.part,尽管对手动下载的文件检查它的大小相同,谢天谢地完成。我无法理解为什么它被保存为部分文件。 Sorta不便于我的下一个想法。有没有人知道为什么会这样?这是我的代码......有效......
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
import mechanize
import urllib
from urllib import urlretrieve
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",1)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir",'Users/matthewyoung/Downloads')
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","Plain text")
fp.set_preference("browser.download.manager.scanWhenDone",False)
fp.set_preference("browser.download.manager.showAlertOnComplete",True)
fp.set_preference("browser.download.manager.useWindow",False)
fp.set_preference("browser.helperApps.alwaysAsk.force",False)
browser = webdriver.Firefox(firefox_profile=fp)
#browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://vizier.u-strasbg.fr/vizier/surveys.htx") # Load page
assert "VizieR" in browser.title
#p = raw_input('Star name? ')
elem = browser.find_element_by_name('-c') # Find the query box
elem.send_keys('mwc 560' + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API
elem=browser.find_element_by_name('-out.max')
elem.send_keys('unlimited'+Keys.TAB)
elem2=browser.find_element_by_name('-out.form')
time.sleep(0.5)
elem2.send_keys('; -Separated-Values')
time.sleep(0.5)
elem2.send_keys(Keys.TAB)
elem2.send_keys(Keys.TAB)
time.sleep(0.2)
browser.find_element_by_class_name('data').submit()
time.sleep(3.0)
#df=elem2.send_keys(Keys.SPACE)
#print df
browser.close()
答案 0 :(得分:3)
以.part下载,因为弹出保存为对话框窗口。 Python无法处理弹出窗口。我发现当你尝试在webdriver中设置自定义配置文件的设置时,它不一定有效(例如我能够在selenium中设置自定义配置文件以下载csv而不是pdf)。但是,我能够通过在Firefox中创建自定义配置文件来解决我的pdf问题。我对tsv文件不是很有经验,所以我不确定那是什么设置。如果您可以创建一个新的firefox配置文件(按照此处的说明进行操作:https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles) 您可以尝试将该配置文件设置为默认保存tsv。如果您不知道要进入的确切设置并更改“about:config”,您可以尝试单击弹出窗口上的复选框以始终保存这些类型的文件。
从那里您将个人资料设置为您创建的自定义个人资料,如下所示:
profile = webdriver.firefox.firefox_profile.FirefoxProfile("/Users/matthewyoung/Library/Application Support/Firefox/Profiles/"YOUR PROFILE NAME")
请记住,您的个人资料名称将首先包含一堆随机字母,因此请按照该路径查找实际的个人资料名称。
答案 1 :(得分:0)
我认为您在Firefox配置文件设置中唯一缺少的是以下
fp.set_preference("browser.helperApps.neverAsk.openFile",
'Plain Text')
所以整个代码应该是
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir",'Users/matthewyoung/Downloads')
fp.set_preference("browser.helperApps.neverAsk.openFile", 'Plain Text')
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","Plain text")
fp.set_preference("browser.download.manager.scanWhenDone",False)
fp.set_preference("browser.download.manager.showAlertOnComplete",True)
fp.set_preference("browser.download.manager.useWindow",False)
fp.set_preference("browser.helperApps.alwaysAsk.force",False)
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://vizier.u-strasbg.fr/vizier/surveys.htx") # Load page
assert "VizieR" in browser.title
elem = browser.find_element_by_name('-c') # Find the query box
elem.send_keys('mwc 560' + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API
elem=browser.find_element_by_name('-out.max')
elem.send_keys('unlimited'+Keys.TAB)
elem2=browser.find_element_by_name('-out.form')
time.sleep(0.5)
elem2.send_keys('; -Separated-Values')
time.sleep(0.5)
elem2.send_keys(Keys.TAB)
elem2.send_keys(Keys.TAB)
time.sleep(0.2)
browser.find_element_by_class_name('data').submit()
time.sleep(3.0)
browser.close()
答案 2 :(得分:0)
以下值应用于纯文本:
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/plain")