2011-10-01 38 views
5

Quiero descargar todos los archivos de una página de Internet, en realidad todos los archivos de imagen. Encontré que el módulo 'urllib' es lo que necesito. Parece que hay un método para descargar un archivo, si conoce el nombre del archivo, pero yo no.Python descarga todos los archivos desde la dirección de internet?

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

¿Hay un método para descargar todos los archivos de la página y puede devolver una lista?

+2

¿Has oído hablar de 'wget'? –

+1

posible duplicado de [Web scraping con Python] (http://stackoverflow.com/questions/2081586/web-scraping-with-python) – Mat

+0

No se puede encontrar mucha información. Tal vez un pequeño script de ejemplo? – Brock123

Respuesta

6

Aquí hay un pequeño ejemplo para comenzar a usar BeautifulSoup para este tipo de ejercicio: le da a este script una URL, e imprimirá las URL de las imágenes a las que se hace referencia desde esa página en el atributo . que terminan 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 

continuación, puede utilizar urllib.urlretrieve para descargar cada una de las imágenes apuntado por full_url, pero en ese momento usted tiene que decidir cómo nombrar a ellos y qué hacer con las imágenes descargadas , que no está especificado en tu pregunta.

Cuestiones relacionadas