2016-03-23 58 views
1

由於在Python(2.7),我真的是一個新手在尋找下一個建議:由Python的鏈接下載文件存儲在CSV

我有分隔的一列逗號存儲HTTP鏈接csv文件。

http://example.com/file.pdf, 
http://example.com/file.xls, 
http://example.com/file.xlsx, 
http://example.com/file.doc, 

主要目的是循環所有這些鏈接並通過它們下載文件的原始擴展名和名稱。

所以我的搜索結果,並幫助這裏給我下一個腳本:

import urllib2 
import pandas as pd 

links = pd.read_csv('links.csv', sep=',', header =(0)) 

url = links     # I know this part wrong by don`n know how to do right 

user_agent = 'Mozilla 5.0 (Windows 7; Win64; x64)' 

file_name = "tessst"   # here the files name by how to get their original names 

u = urllib2.Request(url, headers = {'User-Agent' : user_agent}) 
req = urllib2.urlopen(u) 
f = open(file_name, 'wb') 
f.write(req.read()) 

f.close() 

請任何幫助

P不是肯定大熊貓 - 也許CSV更好?

+0

那麼http://stackoverflow.com/a/19602990/3014866? –

回答

1

如果我可以假設你的CSV文件只有一列,包含鏈接,那麼這將工作。

import csv, sys 
import requests 
import urllib2 
import os 

filename = 'test.csv' 
with open(filename, 'rb') as f: 
    reader = csv.reader(f) 
    try: 
     for row in reader: 
      if 'http' in row[0]: 
       #print row 
       rev = row[0][::-1] 
       i = rev.index('/') 
       tmp = rev[0:i] 
       #print tmp[::-1] 
       rq = urllib2.Request(row[0]) 
       res = urllib2.urlopen(rq) 
       if not os.path.exists("./"+tmp[::-1]):     
        pdf = open("./" + tmp[::-1], 'wb') 
        pdf.write(res.read()) 
        pdf.close() 
       else: 
        print "file: ", tmp[::-1], "already exist" 
    except csv.Error as e: 
     sys.exit('file %s, line %d: %s' % (filename, reader.line_num, e)) 
+0

一般而言,它在一些更改(添加標題後)後工作,但它重寫了文件 –

+0

很喜歡它的使用。我已經更改了代碼,現在只有在以前沒有下載文件時纔會下載代碼。 ###和平 –

+0

謝謝你的答案 - 但主要目的 - 讓所有文件 - 不是一個 - 仍然未得到 –