使用Selenium将文件保存到具有特定名称的特定位置

时间:2013-09-06 09:37:53

标签: text selenium

我正在尝试将vcard下载到桌面上的特定位置,并使用特定的文件名(我定义)。

我有可以将文件下载到桌面的代码。

url = "http://www.kirkland.com/vcard.cfm?itemid=10485&editstatus=0"
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/x-vcard")
browser = webdriver.Firefox(firefox_profile=fp)
browser.get(url)

请注意,上面的URL是指向vcard的链接。

这是保存到代码本身所在的同一目录,并使用由我下载的站点生成的文件名。

我想指定文件所在的目录以及文件名。

具体来说,我想调用文件something.txt

另请注意,我意识到有更简单的方法(使用urllib或urllib2)。我需要以这种特定的方式(如果可能的话)b / c一些链接是javascript,这需要我使用Selenium。我使用上面的URL作为示例来简化情况。如有必要,我可以提供其他示例/代码以显示更复杂的情况。

最后,非常感谢你的帮助,我相信我会在这篇文章中得到的,以及你在去年为我提供的所有帮助。我不知道如果不是这个社区,我将如何学到去年所学到的一切。

1 个答案:

答案 0 :(得分:2)

我的代码有效。它更像是一个黑客而不是一个解决方案,但它在这里:

# SET FIREFOX PROFILE 
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/x-vcard")

#OPEN URL 
browser = webdriver.Firefox(firefox_profile=fp)
browser.get(url)

#FIND MOST RECENT FILE IN (YOUR) DIR AND RENAME IT
os.chdir("DIR-STRING")
files = filter(os.path.isfile, os.listdir("DIR-STRING"))
files = [os.path.join("DIR-STRING", f) for f in files]
files.sort(key=lambda x: os.path.getmtime(x))
newest_file = files[-1]
os.rename(newest_file, "NEW-FILE-NAME"+"EXTENSION") 

#GET THE STRING, AND DELETE THE FILE
f = open("DIR-STRING"+"NEW-FILE-NAME"+"EXTENSION", "r")
string = f.read()
#DO WHATEVER YOU WANT WITH THE STRING/TEXT FROM THE DOWNLOAD
f.close()
os.remove("DIR-STRING"+"NEW-FILE-NAME"+"EXTENSION")

DIR-STRING是保存文件的目录的路径 NEW-FILE-NAME是您想要的文件的名称 EXTENSION是.txt等。

相关问题