2015-11-02 8 views
8

के साथ पीडीएफ फ़ाइल कैसे डाउनलोड करूं, मैं एक पायथन लिपि लिख रहा हूं, जो यूआरएल में दिए गए प्रारूप के अनुसार स्थानीय रूप से पीडीएफ फ़ाइल को सहेज लेगा। उदाहरण के लिए।मैं पीडीएफ फ़ाइल को पीटीएफ

https://Hostname/saveReport/file_name.pdf #saves the content in PDF file. 

मैं अजगर स्क्रिप्ट के माध्यम से इस URL खोलने हूँ:

import webbrowser 
webbrowser.open("https://Hostname/saveReport/file_name.pdf") 

यूआरएल चित्र और पाठ के बहुत सारे हैं। एक बार यह यूआरएल खोला जाने के बाद मैं एक फाइल को पीडीएफ प्रारूप में पीडीएफ प्रारूप में सहेजना चाहता हूं।

यही वह है जो मैंने अभी तक किया है।
कोड 1:

import requests 
url="https://Hostname/saveReport/file_name.pdf" #Note: It's https 
r = requests.get(url, auth=('usrname', 'password'), verify=False) 
file = open("file_name.pdf", 'w') 
file.write(r.read()) 
file.close() 

कोड 2:

import urllib2 
import ssl 
url="https://Hostname/saveReport/file_name.pdf" 
context = ssl._create_unverified_context() 
response = urllib2.urlopen(url, context=context) #How should i pass authorization details here? 
html = response.read() 

ऊपर कोड मैं हो रही है में: urllib2.HTTPError: HTTP त्रुटि 401: अनधिकृत

मैं कोड 2 उपयोग करते हैं, कैसे कर सकते मैं प्रमाणीकरण विवरण पास?

+0

आप 'webbrowser.open',' requests.get', या 'urllib2 का उपयोग कर एक समाधान चाहते हैं। urlopen'? –

+0

@ रोब - मैंने दृष्टिकोणों की कोशिश की है। तो अनुरोध या urllib2 कुछ भी काम करेगा। –

उत्तर

5

मुझे लगता है कि यह काम करेगा

import requests 
url="https://Hostname/saveReport/file_name.pdf" #Note: It's https 
r = requests.get(url, auth=('usrname', 'password'), verify=False,stream=True) 
r.raw.decode_content = True 
with open("file_name.pdf", 'wb') as f: 
     shutil.copyfileobj(r.raw, f)  
0

आप की तरह कुछ की कोशिश कर सकते हैं:

import requests 
response = requests.get('https://websitewithfile.com/file.pdf',verify=False, auth=('user', 'pass')) 
with open('file.pdf','w') as fout: 
    fout.write(response.read()): 
+0

'response.text' शायद एक खराब विकल्प है, क्योंकि इसमें एक डिकोडिंग चरण शामिल है। हो सकता है कि फ़ाइल 'wb' के साथ खोलें और इसके बजाय 'response.content' लिखें। –

+1

respond.raw मुझे लगता है कि –

+0

स्पष्ट रूप से, 'respond.iter_chunk'' अनुरोध 'का "एक दस्तावेज़ पुनर्प्राप्त करने के लिए पसंदीदा और अनुशंसित तरीका है": http://docs.python-requests.org/en/latest/user/quickstart/# कच्चे प्रतिक्रिया-सामग्री –

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