使用Python下载多个xls文件

时间:2015-02-12 23:17:50

标签: python csv windows-7

我想知道这里有人可以帮我创建脚本吗?我之前从未做过这样的事情,所以我不知道自己在做什么。但我现在已经读了几天了,我仍然不理解它,所以我感谢所有帮助。我甚至愿意为你的服务买单!

这是我的问题的一个例子。我目前在我的Windows桌面上保存了一个名为“Stars”的CSV文件,其中包含大约50.000个不同的链接,这些链接在按下时直接开始下载xls文件。每行包含其中一个链接。我希望在你的帮助下为此创建一些脚本,通过每行进行某种循环并访问这些不同的链接,以便下载这些50.000个不同的文件。

感谢大家花时间阅读本文

/莎拉

2 个答案:

答案 0 :(得分:0)

说出您的CSV文件如下:

http://www.ietf.org/rfc/rfc959.txt
http://www.ietf.org/rfc/rfc1579.txt
http://www.ietf.org/rfc/rfc2577.txt

在python代码中将路径替换为csvfiletargetdir

import os
import urllib2

csvfile = '/tmp/links.csv'
targetdir = '/tmp/so'

with open(csvfile) as links:
    for link in links:
        filename = link.split('/')[-1].strip()
        filepath = os.path.join(targetdir, filename)
        print 'Downloading %s \n\t .. to %s' % (link.strip(), filepath)
        with open(filepath, 'w') as data:
            xlsfile = urllib2.urlopen(link)
            data.writelines(xlsfile)

使用示例:

$ python download_all.py
Downloading http://www.ietf.org/rfc/rfc959.txt
     .. to /tmp/so/rfc959.txt
Downloading http://www.ietf.org/rfc/rfc1579.txt
     .. to /tmp/so/rfc1579.txt
Downloading http://www.ietf.org/rfc/rfc2577.txt
     .. to /tmp/so/rfc2577.txt

$ dir -1 /tmp/so
rfc1579.txt
rfc2577.txt
rfc959.txt

祝你好运。

答案 1 :(得分:0)

另一种解决方案:

如果没有更多信息,我可以就此问题向您提供的最佳答案是使用Selenium下载文件,使用csv模块解析您的csv链接。

示例:

import csv
from selenium import webdriver

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', 'PATH\TO\DOWNLOAD\DIRECTORY')
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', "application/csv")
driver = webdriver.Firefox(firefox_profile=profile)

input_csv_location = "PATH\TO\CSV.csv"

with open(csv_location, 'r') as input_csv:
    reader = csv.reader(input_csv)
    for line in reader:
        driver.get(line[0])

这假设csv上没有标题,并且网址位于spot numeo uno中。