2011-10-01 14 views
5

Voglio scaricare tutti i file da una pagina internet, in realtà tutti i file di immagine. Ho trovato il modulo 'urllib' come ciò di cui ho bisogno. Sembra che ci sia un metodo per scaricare un file, se conosci il nome del file, ma non lo faccio.Python scarica tutti i file dall'indirizzo Internet?

urllib.urlretrieve('http://www.example.com/page', 'myfile.jpg') 

Esiste un metodo per scaricare tutti i file dalla pagina e magari restituire un elenco?

+2

Avete sentito parlare di 'wget'? –

+1

possibile duplicato di [Web scraping con Python] (http://stackoverflow.com/questions/2081586/web-scraping-with-python) – Mat

+0

Impossibile trovare molte informazioni. Forse un piccolo script di esempio? – Brock123

risposta

6

Ecco un piccolo esempio per iniziare a utilizzare BeautifulSoup per questo tipo di esercizio: fornisci a questo script un URL e stamperà gli URL delle immagini referenziate da quella pagina nell'attributo src dei tag img che terminano con jpg o png:

import sys, urllib, re, urlparse 
from BeautifulSoup import BeautifulSoup 

if not len(sys.argv) == 2: 
    print >> sys.stderr, "Usage: %s <URL>" % (sys.argv[0],) 
    sys.exit(1) 

url = sys.argv[1] 

f = urllib.urlopen(url) 
soup = BeautifulSoup(f) 
for i in soup.findAll('img', attrs={'src': re.compile('(?i)(jpg|png)$')}): 
    full_url = urlparse.urljoin(url, i['src']) 
    print "image URL: ", full_url 

quindi è possibile utilizzare urllib.urlretrieve per scaricare ciascuna delle immagini a cui punta full_url, ma a quel punto si deve decidere come denominare loro e che cosa fare con le immagini scaricate , che non è specificato nella tua domanda.

Problemi correlati