【问题标题】:Selenium-python downloading but file is saved as .partSelenium-python 下载但文件保存为 .part
【发布时间】:2013-06-28 02:10:10
【问题描述】:

我的脚本可以工作,但它会将文件保存为 .part,尽管与手动下载的文件进行检查,它的大小相同,谢天谢地是完整的。我不明白为什么它被保存为部分文件。我的下一个想法有点不方便。有人知道为什么会这样吗?这是我的代码...有效...

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()

【问题讨论】:

  • 当我运行它时,我得到了一个名为 asu.tsv 的文件
  • 嗯...这很有趣。这就是我所期待的。我正在从 Eclipse 中运行它。我要去别的地方试试,看看有没有什么不同。
  • 我用的是 google chrome webdriver
  • 你做了什么,只是把'firefox'改成'chrome'?
  • 您是否手动点击弹出窗口?因为我试图避免这种情况。

标签: python firefox selenium python-2.7 download


【解决方案1】:

以下值应用于纯文本:

fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/plain")

【讨论】:

    【解决方案2】:

    我认为您的 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()
    

    【讨论】:

      【解决方案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")
      

      请记住,您的个人资料名称首先会有一堆随机字母,因此请按照该路径查找实际的个人资料名称。

      【讨论】:

        猜你喜欢
        • 2012-07-29
        • 2019-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-30
        • 2020-08-03
        • 1970-01-01
        相关资源
        最近更新 更多