1

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

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

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 为例来简化情况。如有必要,我可以提供其他示例/代码来展示更复杂的情况。

最后,非常感谢您为这篇文章提供的帮助,以及您在去年为我提供的所有帮助。如果没有这个社区,我不知道我将如何学习去年我学到的所有东西。

4

1 回答 1

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 等。

于 2013-09-06T10:59:08.220 回答