2009-12-01 17 views
31

क्या पाइथन के पास संपूर्ण एचटीएमएल पेज और इसकी सामग्री (छवियों, सीएसएस) को यूआरएल दिए गए स्थानीय फ़ोल्डर में डाउनलोड करने का कोई तरीका है। और स्थानीय रूप से सामग्री लेने के लिए स्थानीय HTML फ़ाइल को अपडेट करना।एचटीएमएल पेज और इसकी सामग्री डाउनलोड करें

उत्तर

29

आप अलग-अलग URL डाउनलोड करने के लिए urllib मॉड्यूल का उपयोग कर सकते हैं लेकिन यह सिर्फ डेटा दिखाएगी। यह HTML को पार्स नहीं करेगा और सीएसएस फ़ाइलों और छवियों जैसी चीजों को स्वचालित रूप से डाउनलोड नहीं करेगा।

यदि आप "संपूर्ण" पृष्ठ डाउनलोड करना चाहते हैं तो आपको HTML को पार्स करने और अन्य चीज़ों को डाउनलोड करने की आवश्यकता होगी जिन्हें आपको डाउनलोड करने की आवश्यकता है। आपके द्वारा पुनर्प्राप्त HTML को पार्स करने के लिए आप Beautiful Soup जैसे कुछ का उपयोग कर सकते हैं।

This question में कुछ नमूना कोड ठीक से ऐसा कर रहा है।

6

आप urlib उपयोग कर सकते हैं:

import urllib.request 

opener = urllib.request.FancyURLopener({}) 
url = "http://stackoverflow.com/" 
f = opener.open(url) 
content = f.read() 
+2

केवल खाते HTTP प्रतिसाद कोड को ध्यान में रखकर एक पेज डाउनलोड करने के लिए प्रकट होता है कि; यह वास्तव में पेज संसाधनों को डाउनलोड नहीं करता है जब तक कि मुझे कुछ याद नहीं आ रहा है। – bdeniker

8

जो आप खोज रहे हैं वह एक मिररिंग टूल है। यदि आप पाइथन में एक चाहते हैं, तो पीईपीआई spider.py सूचीबद्ध करता है लेकिन मुझे इसका कोई अनुभव नहीं है। अन्य बेहतर हो सकते हैं लेकिन मुझे नहीं पता - मैं 'wget' का उपयोग करता हूं, जो getting the CSS और छवियों का समर्थन करता है। यह शायद आप क्या चाहते हैं इस तरह के इनलाइन चित्र और बाह्य शैली शीट के रूप में (the manual से उद्धृत)

केवल एक HTML पृष्ठ को पुनः प्राप्त है, लेकिन यह सुनिश्चित करें कि सभी तत्वों पेज के लिए आवश्यक प्रदर्शित करने के लिए बनाने के लिए, करता है , भी डाउनलोड कर रहे हैं। सुनिश्चित करें कि डाउनलोड किए गए पृष्ठ संदर्भ डाउनलोड किए गए लिंक हैं।

wget -p --convert-links http://www.server.com/dir/page.html 
संबंधित मुद्दे