2015-04-15 11 views
5

मैं पायथन में पीडीएफ वेब स्क्रैपर बनाने पर काम कर रहा हूं। अनिवार्य रूप से, मैं अपने पाठ्यक्रमों में से एक से सभी व्याख्यान नोट्स को स्क्रैप करने की कोशिश कर रहा हूं, जो पीडीएफ के रूप में हैं। मैं एक यूआरएल दर्ज करना चाहता हूं, और फिर पीडीएफ प्राप्त कर सकता हूं और उन्हें अपने लैपटॉप में एक निर्देशिका में सहेज सकता हूं। मैंने कई ट्यूटोरियल देखे हैं, लेकिन मुझे पूरा यकीन नहीं है कि यह करने के बारे में कैसे जाना है। StackOverflow पर कोई भी प्रश्न मुझसे मदद नहीं कर रहा है।स्क्रैप किए गए लिंक [पायथन] से पीडीएफ कैसे डाउनलोड करें?

यहाँ मैं अब तक है:

import requests 
from bs4 import BeautifulSoup 
import shutil 

bs = BeautifulSoup 

url = input("Enter the URL you want to scrape from: ") 
print("") 

suffix = ".pdf" 

link_list = [] 

def getPDFs():  
    # Gets URL from user to scrape 
    response = requests.get(url, stream=True) 
    soup = bs(response.text) 

    #for link in soup.find_all('a'): # Finds all links 
    # if suffix in str(link): # If the link ends in .pdf 
     #  link_list.append(link.get('href')) 
    #print(link_list) 

    with open('CS112.Lecture.09.pdf', 'wb') as out_file: 
     shutil.copyfileobj(response.raw, out_file) 
    del response 
    print("PDF Saved") 

getPDFs() 

मूल रूप से, मैं पीडीएफ़ के लिए सभी लिंक्स हो गया था, लेकिन कैसे उन्हें डाउनलोड करने में पता नहीं था; इसके लिए कोड अब टिप्पणी की गई है।

अब मैं उस बिंदु पर पहुंच गया हूं जहां मैं केवल एक पीडीएफ डाउनलोड करने की कोशिश कर रहा हूं; और एक पीडीएफ डाउनलोड हो जाता है, लेकिन यह एक 0 केबी फ़ाइल है।

यह किसी भी उपयोग की है, तो मैं पायथन 3.4.2

उत्तर

6

उपयोग कर रहा हूँ यह कुछ में लॉग इन किया जा रहा है की आवश्यकता नहीं है कि है, तो आप urlretrieve() उपयोग कर सकते हैं:

from urllib.request import urlretrieve 

for link in link_list: 
    urlretrieve(link) 
+1

इस के लिए धन्यवाद। भले ही यह ओपी की मदद नहीं करता है, मैंने एक नए पायथन समारोह के बारे में सीखा। :) –

+0

बहुत बढ़िया। यह पूरी तरह से काम करता है! हालांकि एक अनुवर्ती सवाल; मैं फ़ाइलों को सहेजने के लिए कौन सी निर्देशिका चुन सकता हूं? – freddiev4

+1

@ FreddieV4 आप दूसरे तर्क में फ़ाइल के लिए पूर्ण पथ निर्दिष्ट कर सकते हैं, http://stackoverflow.com/questions/6373094/how-to-download-a-file-to-a-specific-path- पर उदाहरण देखें इन-द-सर्वर-अजगर। धन्यवाद। – alecxe

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