2012-06-04 10 views
7

मैं एक प्रोग्राम खोलने की कोशिश कर रहा हूं जो एक निर्देशिका खोल देगा, फिर पावरपॉइंट्स के नाम प्राप्त करने के लिए नियमित अभिव्यक्तियों का उपयोग करें और फिर स्थानीय रूप से फाइलें बनाएं और उनकी सामग्री कॉपी करें। जब मैं इसे चलाता हूं तो यह काम करता प्रतीत होता है, हालांकि जब मैं वास्तव में फ़ाइलों को खोलने की कोशिश करता हूं तो वे कहते हैं कि संस्करण गलत है।पाइथन urllib एक ऑनलाइन निर्देशिका की सामग्री डाउनलोड करने

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

आपको ** कभी भी ** रेईएक्स के साथ एचटीएमएल का विश्लेषण नहीं करना चाहिए, http://stackoverflow.com/a/1732454/851737 देखें। एक HTML पार्सिंग लाइब्रेरी का उपयोग करें जैसे कि lxml या BeautifulSoup। – schlamar

+0

सुंदर सूप यह है। आपकी सिफारिश के लिए धन्यवाद। – davelupt

उत्तर

8

यह कोड मेरे लिए काम किया। मैंने बस इसे थोड़ा संशोधित किया क्योंकि आपका प्रत्येक पीपीटी फ़ाइल डुप्लिकेट कर रहा था।

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

धन्यवाद, आप एक चैंपियन हैं। – davelupt

+0

डाउनवोट कारण के लिए मेरी टिप्पणी [उपरोक्त] देखें (http://stackoverflow.com/questions/10875215/python-urllib-downloading-contents-of-an-online-directory#comment14174956_10875215)। – schlamar

+0

यह आश्चर्यजनक है, धन्यवाद – Anuj

संबंधित मुद्दे