2016-03-23 12 views
1

saklanan:Python indir dosyaları sonraki öneri arayan Python (2.7) `m bir acemi olarak csv

Ben ayrılmış bir sütun virgül saklanan http bağlantıları içeren bir CSV dosyası var.

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

Buradaki temel amaç tüm bu bağlantılar arasında geçiş yapmak ve dosyaları orijinal uzantı ve adda indirmektir.

Yani benim arama sonuçları ve burada yardımcı beni sonraki senaryoyu verdim:

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

lütfen herhangi bir yardım pandalar hakkında emin

P S - belki csv daha iyi?

+0

http://stackoverflow.com/a/19602990/3014866 nedir? –

cevap

1

CSV dosyanızın yalnızca bir sütun olması gerektiğini varsayalım, bağlantılar içeriyorsa bu işe yarar.

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

genel olarak bazı değişiklikler (üstbilgileri ekledikten sonra) sonra çalışır, ancak –

+0

dosyayı yeniden yazdıysanız kullanımınıza geldi. Kodu değiştirdim, ancak dosya daha önce indirilmemişse indirilecektir. ### peace –

+0

Yanıtlarınız için teşekkür ederiz - ama ana amaç - tüm dosyalara sahip olmak - bir değil - hala ulaşılamıyor –