2015-04-15 10 views
5

Sto lavorando per creare un Web Scraper PDF in Python. In sostanza, sto cercando di racimolare tutti gli appunti di una delle mie lezioni, che sono sotto forma di PDF. Voglio inserire un URL, quindi ottenere i PDF e salvarli in una directory sul mio laptop. Ho esaminato diversi tutorial, ma non sono del tutto sicuro su come procedere. Nessuna delle domande su StackOverflow sembra essere d'aiuto neanche a me.Come scaricare PDF da collegamenti raschiati [Python]?

Ecco quello che ho finora:

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() 

In origine, avevo ottenuto tutti i collegamenti ai file PDF, ma non sapevo come scaricare loro; il codice per questo è ora commentato.

Ora sono arrivato al punto in cui sto cercando di scaricare solo un PDF; e un PDF viene scaricato, ma è un file 0KB.

Se è di qualche utilità, sto usando Python 3.4.2

risposta

6

Se questo è qualcosa che non richiede di essere loggato, è possibile utilizzare urlretrieve():

from urllib.request import urlretrieve 

for link in link_list: 
    urlretrieve(link) 
+1

Grazie per questo. Anche se non aiuta l'OP, ho imparato a conoscere una nuova funzione Python. :) –

+0

Fantastico. Funziona perfettamente! Una domanda di follow-up però; come faccio a scegliere in quale directory salvare i file? – freddiev4

+1

@ FreddieV4 è possibile specificare il percorso completo del file nel secondo argomento, vedere esempi all'indirizzo http://stackoverflow.com/questions/6373094/how-to-download-a-file-to-a-specific-path- in-the-server-python. Grazie. – alecxe