2012-06-04 9 views
7

Sto provando a creare un programma che aprirà una directory, quindi utilizzare le espressioni regolari per ottenere i nomi dei powerpoints e quindi creare localmente i file e copiarne il contenuto. Quando eseguo questo sembra funzionare, tuttavia quando provo effettivamente ad aprire i file continuano a dire che la versione è sbagliata.urllib Python che scarica il contenuto di una directory online

from urllib.request import urlopen 
import re 

urlpath = urlopen('http://www.divms.uiowa.edu/~jni/courses/ProgrammignInCobol/presentation/') 
string = urlpath.read().decode('utf-8') 

pattern = re.compile('ch[0-9]*.ppt') #the pattern actually creates duplicates in the list 

filelist = pattern.findall(string) 
print(filelist) 

for filename in filelist: 
    remotefile = urlopen('http://www.divms.uiowa.edu/~jni/courses/ProgrammignInCobol/presentation/' + filename) 
    localfile = open(filename,'wb') 
    localfile.write(remotefile.read()) 
    localfile.close() 
    remotefile.close() 
+2

Si dovrebbe ** mai ** analizzare HTML con RegEx, vedere http://stackoverflow.com/a/1732454/851737. Utilizzare una libreria di analisi HTML come lxml o BeautifulSoup. – schlamar

+0

BeautifulSoup è. Grazie per la tua raccomandazione – davelupt

risposta

8

Questo codice ha funzionato per me. L'ho appena modificato un po 'perché il tuo stava duplicando ogni file ppt.

from urllib2 import urlopen 
import re 

urlpath =urlopen('http://www.divms.uiowa.edu/~jni/courses/ProgrammignInCobol/presentation/') 
string = urlpath.read().decode('utf-8') 

pattern = re.compile('ch[0-9]*.ppt"') #the pattern actually creates duplicates in the list 

filelist = pattern.findall(string) 
print(filelist) 

for filename in filelist: 
    filename=filename[:-1] 
    remotefile = urlopen('http://www.divms.uiowa.edu/~jni/courses/ProgrammignInCobol/presentation/' + filename) 
    localfile = open(filename,'wb') 
    localfile.write(remotefile.read()) 
    localfile.close() 
    remotefile.close() 
+0

Grazie, sei un campione. – davelupt

+0

Vedere il mio commento [sopra] (http://stackoverflow.com/questions/10875215/python-urllib-downloading-contents-of-an-online-directory#comment14174956_10875215) per motivo di downvote. – schlamar

+0

questo è sorprendente, grazie – Anuj

Problemi correlati